From: Karl Fleischmann Date: Tue, 15 Feb 2022 15:22:06 +0000 (+0100) Subject: lib: Remove deprecated src_pos_r parameter from base64_decode() X-Git-Tag: 2.4.0~4335 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2fa7a054799adfc6603406f2530b0de2f77e264d;p=thirdparty%2Fdovecot%2Fcore.git lib: Remove deprecated src_pos_r parameter from base64_decode() The src_pos_r parameter in base64_decode() has been deprecated in commit afa3db0a6f15e1b1038cb47f0632baa8f23d0f67 and is now removed - both from the function as well as all it's calls. --- diff --git a/src/auth/auth-request-handler.c b/src/auth/auth-request-handler.c index d4bf53c276..f9cbd34e81 100644 --- a/src/auth/auth-request-handler.c +++ b/src/auth/auth-request-handler.c @@ -667,7 +667,7 @@ bool auth_request_handler_auth_begin(struct auth_request_handler *handler, /* Initial response encoded in Bas64 */ buf = t_buffer_create(MAX_BASE64_DECODED_SIZE(len)); - if (base64_decode(initial_resp, len, NULL, buf) < 0) { + if (base64_decode(initial_resp, len, buf) < 0) { auth_request_handler_auth_fail_code(handler, request, AUTH_CLIENT_FAIL_CODE_INVALID_BASE64, "Invalid base64 data in initial response"); @@ -725,7 +725,7 @@ bool auth_request_handler_auth_continue(struct auth_request_handler *handler, data_len = strlen(data); buf = t_buffer_create(MAX_BASE64_DECODED_SIZE(data_len)); - if (base64_decode(data, data_len, NULL, buf) < 0) { + if (base64_decode(data, data_len, buf) < 0) { auth_request_handler_auth_fail_code(handler, request, AUTH_CLIENT_FAIL_CODE_INVALID_BASE64, "Invalid base64 data in continued response"); diff --git a/src/auth/mech-scram.c b/src/auth/mech-scram.c index a90d0d1f9b..fff9f1f605 100644 --- a/src/auth/mech-scram.c +++ b/src/auth/mech-scram.c @@ -431,7 +431,7 @@ parse_scram_client_final(struct scram_auth_request *request, request->proof = buffer_create_dynamic(request->pool, MAX_BASE64_DECODED_SIZE(len)); - if (base64_decode(&fields[field_count-1][2], len, NULL, + if (base64_decode(&fields[field_count-1][2], len, request->proof) < 0) { *error_r = "Invalid base64 encoding"; return FALSE; diff --git a/src/auth/password-scheme-scram.c b/src/auth/password-scheme-scram.c index a395074a68..5f91f13a0f 100644 --- a/src/auth/password-scheme-scram.c +++ b/src/auth/password-scheme-scram.c @@ -79,7 +79,7 @@ int scram_scheme_parse(const struct hash_method *hmethod, const char *name, *salt_r = fields[1]; buf = t_buffer_create(hmethod->digest_size); - if (base64_decode(fields[2], strlen(fields[2]), NULL, buf) < 0 || + if (base64_decode(fields[2], strlen(fields[2]), buf) < 0 || buf->used != hmethod->digest_size) { *error_r = t_strdup_printf( "Invalid %s StoredKey in passdb", name); @@ -88,7 +88,7 @@ int scram_scheme_parse(const struct hash_method *hmethod, const char *name, memcpy(stored_key_r, buf->data, hmethod->digest_size); buffer_set_used_size(buf, 0); - if (base64_decode(fields[3], strlen(fields[3]), NULL, buf) < 0 || + if (base64_decode(fields[3], strlen(fields[3]), buf) < 0 || buf->used != hmethod->digest_size) { *error_r = t_strdup_printf( "Invalid %s ServerKey in passdb", name); diff --git a/src/auth/password-scheme.c b/src/auth/password-scheme.c index c572cd3779..6b903fe44a 100644 --- a/src/auth/password-scheme.c +++ b/src/auth/password-scheme.c @@ -179,7 +179,7 @@ int password_decode(const char *password, const char *scheme, /* fall through */ case PW_ENCODING_BASE64: buf = t_buffer_create(MAX_BASE64_DECODED_SIZE(len)); - if (base64_decode(password, len, NULL, buf) < 0) { + if (base64_decode(password, len, buf) < 0) { *error_r = "Input isn't valid base64 encoded data"; return -1; } diff --git a/src/doveadm/client-connection-tcp.c b/src/doveadm/client-connection-tcp.c index 97c9402455..23f24dc320 100644 --- a/src/doveadm/client-connection-tcp.c +++ b/src/doveadm/client-connection-tcp.c @@ -369,7 +369,7 @@ client_connection_tcp_authenticate(struct client_connection_tcp *conn) } plain = t_buffer_create(128); - if (base64_decode(line + 6, strlen(line + 6), NULL, plain) < 0) { + if (base64_decode(line + 6, strlen(line + 6), plain) < 0) { i_error("doveadm client sent invalid base64 auth PLAIN data"); return -1; } diff --git a/src/doveadm/dsync/dsync-mailbox-state.c b/src/doveadm/dsync/dsync-mailbox-state.c index cca24d4bc5..15240650c5 100644 --- a/src/doveadm/dsync/dsync-mailbox-state.c +++ b/src/doveadm/dsync/dsync-mailbox-state.c @@ -84,7 +84,7 @@ int dsync_mailbox_states_import(HASH_TABLE_TYPE(dsync_mailbox_state) states, unsigned int i, count; buf = t_buffer_create(strlen(input)); - if (base64_decode(input, strlen(input), NULL, buf) < 0) { + if (base64_decode(input, strlen(input), buf) < 0) { *error_r = "Invalid base64 data"; return -1; } diff --git a/src/imap-hibernate/imap-hibernate-client.c b/src/imap-hibernate/imap-hibernate-client.c index 4065adc592..8a95747613 100644 --- a/src/imap-hibernate/imap-hibernate-client.c +++ b/src/imap-hibernate/imap-hibernate-client.c @@ -153,7 +153,7 @@ imap_hibernate_client_parse_input(const char *const *args, pool_t pool, buffer_t *state_buf; state_buf = buffer_create_dynamic(pool, 1024); - if (base64_decode(value, strlen(value), NULL, + if (base64_decode(value, strlen(value), state_buf) < 0) { *error_r = t_strdup_printf( "Invalid state base64 value: %s", value); diff --git a/src/imap-login/imap-proxy.c b/src/imap-login/imap-proxy.c index 2c62b5e9c5..75f874e9b3 100644 --- a/src/imap-login/imap-proxy.c +++ b/src/imap-login/imap-proxy.c @@ -328,7 +328,7 @@ int imap_proxy_parse_line(struct client *client, const char *line) str = t_str_new(128); if (line[1] != ' ' || - base64_decode(line+2, strlen(line+2), NULL, str) < 0) { + base64_decode(line+2, strlen(line+2), str) < 0) { const char *reason = t_strdup_printf( "Invalid base64 data in AUTHENTICATE response"); login_proxy_failed(client->login_proxy, diff --git a/src/imap/imap-master-client.c b/src/imap/imap-master-client.c index b03e9d9a76..256059c5fb 100644 --- a/src/imap/imap-master-client.c +++ b/src/imap/imap-master-client.c @@ -147,21 +147,21 @@ imap_master_client_parse_input(const char *const *args, pool_t pool, input_r->userdb_fields = t_strsplit_tabescaped(value); } else if (strcmp(key, "client_input") == 0) { - if (base64_decode(value, strlen(value), NULL, + if (base64_decode(value, strlen(value), master_input_r->client_input) < 0) { *error_r = t_strdup_printf( "Invalid client_input base64 value: %s", value); return -1; } } else if (strcmp(key, "client_output") == 0) { - if (base64_decode(value, strlen(value), NULL, + if (base64_decode(value, strlen(value), master_input_r->client_output) < 0) { *error_r = t_strdup_printf( "Invalid client_output base64 value: %s", value); return -1; } } else if (strcmp(key, "state") == 0) { - if (base64_decode(value, strlen(value), NULL, + if (base64_decode(value, strlen(value), master_input_r->state) < 0) { *error_r = t_strdup_printf( "Invalid state base64 value: %s", value); diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 5730f947d4..7725848a8d 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -923,7 +923,7 @@ imapc_connection_authenticate_cb(const struct imapc_command_reply *reply, input_len = strlen(reply->text_full); buf = t_buffer_create(MAX_BASE64_DECODED_SIZE(input_len)); - if (base64_decode(reply->text_full, input_len, NULL, buf) < 0) { + if (base64_decode(reply->text_full, input_len, buf) < 0) { imapc_auth_failed(conn, reply, t_strdup_printf("Server sent non-base64 input for AUTHENTICATE: %s", reply->text_full)); diff --git a/src/lib-mail/message-header-decode.c b/src/lib-mail/message-header-decode.c index 18f6ca2585..8057c41b9b 100644 --- a/src/lib-mail/message-header-decode.c +++ b/src/lib-mail/message-header-decode.c @@ -49,7 +49,7 @@ message_header_decode_encoded(const unsigned char *data, size_t size, case 'B': if (base64_decode(data + start_pos[1] + 1, start_pos[2] - start_pos[1] - 1, - NULL, decodebuf) < 0) { + decodebuf) < 0) { /* contains invalid data. show what we got so far. */ } break; diff --git a/src/lib-mail/test-message-header-encode.c b/src/lib-mail/test-message-header-encode.c index b1c564510b..7f790c263a 100644 --- a/src/lib-mail/test-message-header-encode.c +++ b/src/lib-mail/test-message-header-encode.c @@ -98,7 +98,7 @@ static bool verify_b(const char *str, unsigned int i, bool starts_with_a) return FALSE; } buffer_set_used_size(&buf, 0); - if (base64_decode(str+start, i-start, NULL, &buf) < 0) + if (base64_decode(str+start, i-start, &buf) < 0) return FALSE; i++; diff --git a/src/lib-smtp/smtp-client-connection.c b/src/lib-smtp/smtp-client-connection.c index 3df55182ee..899f831618 100644 --- a/src/lib-smtp/smtp-client-connection.c +++ b/src/lib-smtp/smtp-client-connection.c @@ -774,8 +774,7 @@ smtp_client_connection_auth_cb(const struct smtp_reply *reply, input_len = strlen(reply->text_lines[0]); buf = buffer_create_dynamic(pool_datastack_create(), MAX_BASE64_DECODED_SIZE(input_len)); - if (base64_decode(reply->text_lines[0], input_len, - NULL, buf) < 0) { + if (base64_decode(reply->text_lines[0], input_len, buf) < 0) { error = t_strdup_printf( "Authentication failed: " "Server sent non-base64 input for AUTH: %s", diff --git a/src/lib/base64.h b/src/lib/base64.h index ec6ac17ae1..01537bfcbe 100644 --- a/src/lib/base64.h +++ b/src/lib/base64.h @@ -305,16 +305,10 @@ t_base64_encode_str(enum base64_encode_flags flags, size_t max_line_len, /* Translates base64 data into binary and appends it to dest buffer. See base64_scheme_decode(). - - The src_pos_r parameter is deprecated and MUST be NULL. */ static inline int -base64_decode(const void *src, size_t src_size, size_t *src_pos_r ATTR_UNUSED, - buffer_t *dest) ATTR_NULL(3) +base64_decode(const void *src, size_t src_size, buffer_t *dest) { - // NOTE: src_pos_r is deprecated here; to be removed in v2.4 */ - i_assert(src_pos_r == NULL); - return base64_scheme_decode(&base64_scheme, 0, src, src_size, dest); } diff --git a/src/lib/test-base64.c b/src/lib/test-base64.c index d024890ed4..85e85e6ffb 100644 --- a/src/lib/test-base64.c +++ b/src/lib/test-base64.c @@ -85,7 +85,7 @@ static void test_base64_decode(void) max_decoded_size); str = &buf; ret = base64_decode(tests[i].input, strlen(tests[i].input), - NULL, str); + str); test_assert_idx(tests[i].ret == ret, i); test_assert_idx(strlen(tests[i].output) == str_len(str) && @@ -119,7 +119,7 @@ static void test_base64_random(void) str_truncate(dest, 0); base64_encode(buf, max, str); test_assert_idx(base64_decode(str_data(str), str_len(str), - NULL, dest) >= 0, i); + dest) >= 0, i); test_assert_idx(str_len(dest) == max && memcmp(buf, str_data(dest), max) == 0, i); } diff --git a/src/master/test-auth-client.c b/src/master/test-auth-client.c index d161a5b45c..239be34c8d 100644 --- a/src/master/test-auth-client.c +++ b/src/master/test-auth-client.c @@ -462,7 +462,7 @@ test_auth_handshake_auth(struct server_connection *conn, unsigned int id, } data = t_buffer_create(256); if (resp != NULL) { - if (base64_decode(resp, strlen(resp), NULL, data) < 0) { + if (base64_decode(resp, strlen(resp), data) < 0) { i_error("Bad AUTH request: Bad base64"); return FALSE; } @@ -496,7 +496,7 @@ test_auth_handshake_cont(struct server_connection *conn, unsigned int id, resp = args[0]; data = t_buffer_create(256); if (resp != NULL) { - if (base64_decode(resp, strlen(resp), NULL, data) < 0) { + if (base64_decode(resp, strlen(resp), data) < 0) { i_error("Bad CONT request: Bad base64"); return FALSE; } diff --git a/src/pop3-login/client.c b/src/pop3-login/client.c index 1e7b334f89..ad5c046488 100644 --- a/src/pop3-login/client.c +++ b/src/pop3-login/client.c @@ -73,7 +73,7 @@ static bool cmd_xclient(struct pop3_client *client, const char *args) client->common.forward_fields = str_new(client->common.preproxy_pool, MAX_BASE64_DECODED_SIZE(value_len)); - if (base64_decode((*tmp)+8, value_len, NULL, + if (base64_decode((*tmp)+8, value_len, client->common.forward_fields) < 0) args_ok = FALSE; } diff --git a/src/pop3-login/pop3-proxy.c b/src/pop3-login/pop3-proxy.c index bcc7a581f8..9600fa3a94 100644 --- a/src/pop3-login/pop3-proxy.c +++ b/src/pop3-login/pop3-proxy.c @@ -110,7 +110,7 @@ pop3_proxy_continue_sasl_auth(struct client *client, struct ostream *output, int ret; str = t_str_new(128); - if (base64_decode(line, strlen(line), NULL, str) < 0) { + if (base64_decode(line, strlen(line), str) < 0) { const char *reason = t_strdup_printf( "Invalid base64 data in AUTH response"); login_proxy_failed(client->login_proxy, diff --git a/src/submission-login/client.c b/src/submission-login/client.c index 9922c9d438..75643e7429 100644 --- a/src/submission-login/client.c +++ b/src/submission-login/client.c @@ -200,7 +200,7 @@ client_connection_cmd_xclient(void *context, client->common.forward_fields = str_new( client->common.preproxy_pool, MAX_BASE64_DECODED_SIZE(value_len)); - if (base64_decode(value, value_len, NULL, + if (base64_decode(value, value_len, client->common.forward_fields) < 0) { smtp_server_reply(cmd, 501, "5.5.4", "Invalid FORWARD parameter"); diff --git a/src/submission-login/submission-proxy.c b/src/submission-login/submission-proxy.c index 08cea1be21..2d616d6516 100644 --- a/src/submission-login/submission-proxy.c +++ b/src/submission-login/submission-proxy.c @@ -371,7 +371,7 @@ submission_proxy_continue_sasl_auth(struct client *client, } str = t_str_new(128); - if (base64_decode(line, strlen(line), NULL, str) < 0) { + if (base64_decode(line, strlen(line), str) < 0) { login_proxy_failed(client->login_proxy, login_proxy_get_event(client->login_proxy), LOGIN_PROXY_FAILURE_TYPE_PROTOCOL,