diff --git a/changes/ticket40824 b/changes/ticket40824
new file mode 100644
index 0000000000..a4d389ddc2
--- /dev/null
+++ b/changes/ticket40824
@@ -0,0 +1,4 @@
+ o Minor bugfixes (compilation):
+ - Fix all -Werror=enum-int-mismatch warnings. No behavior change. Fixes bug
+ 40824; bugfix on 0.3.5.1-alpha.
+
diff --git a/src/core/proto/proto_socks.c b/src/core/proto/proto_socks.c
index 07177c418a..78767a94ff 100644
--- a/src/core/proto/proto_socks.c
+++ b/src/core/proto/proto_socks.c
@@ -944,7 +944,7 @@ static const char SOCKS_PROXY_IS_NOT_AN_HTTP_PROXY_MSG[] =
* buffer should be cleared). Instead of pulling more data into the first
* chunk of the buffer, we set *want_length_out to the number of bytes
* we'd like to see in the input buffer, if they're available. */
-static int
+static socks_result_t
parse_socks(const char *data, size_t datalen, socks_request_t *req,
int log_sockstype, int safe_socks, size_t *drain_out)
{
@@ -952,7 +952,7 @@ parse_socks(const char *data, size_t datalen, socks_request_t *req,
if (datalen < 2) {
/* We always need at least 2 bytes. */
- return 0;
+ return SOCKS_RESULT_TRUNCATED;
}
first_octet = get_uint8(data);
@@ -985,11 +985,11 @@ parse_socks(const char *data, size_t datalen, socks_request_t *req,
escaped(tmp));
tor_free(tmp);
}
- return -1;
+ return SOCKS_RESULT_INVALID;
}
tor_assert_unreached();
- return -1;
+ return SOCKS_RESULT_INVALID;
}
/** Inspect a reply from SOCKS server stored in buf according
diff --git a/src/feature/hs/hs_descriptor.c b/src/feature/hs/hs_descriptor.c
index 93fc1cf674..da7bb662e1 100644
--- a/src/feature/hs/hs_descriptor.c
+++ b/src/feature/hs/hs_descriptor.c
@@ -2271,7 +2271,7 @@ desc_decode_superencrypted_v3(const hs_descriptor_t *desc,
hs_desc_superencrypted_data_t *
desc_superencrypted_out)
{
- int ret = HS_DESC_DECODE_SUPERENC_ERROR;
+ hs_desc_decode_status_t ret = HS_DESC_DECODE_SUPERENC_ERROR;
char *message = NULL;
size_t message_len;
memarea_t *area = NULL;
@@ -2385,7 +2385,7 @@ desc_decode_encrypted_v3(const hs_descriptor_t *desc,
const curve25519_secret_key_t *client_auth_sk,
hs_desc_encrypted_data_t *desc_encrypted_out)
{
- int ret = HS_DESC_DECODE_ENCRYPTED_ERROR;
+ hs_desc_decode_status_t ret = HS_DESC_DECODE_ENCRYPTED_ERROR;
char *message = NULL;
size_t message_len;
memarea_t *area = NULL;
@@ -2544,7 +2544,7 @@ hs_desc_decode_encrypted(const hs_descriptor_t *desc,
const curve25519_secret_key_t *client_auth_sk,
hs_desc_encrypted_data_t *desc_encrypted)
{
- int ret = HS_DESC_DECODE_ENCRYPTED_ERROR;
+ hs_desc_decode_status_t ret = HS_DESC_DECODE_ENCRYPTED_ERROR;
uint32_t version;
tor_assert(desc);
@@ -2594,7 +2594,7 @@ hs_desc_decode_superencrypted(const hs_descriptor_t *desc,
hs_desc_superencrypted_data_t *
desc_superencrypted)
{
- int ret = HS_DESC_DECODE_SUPERENC_ERROR;
+ hs_desc_decode_status_t ret = HS_DESC_DECODE_SUPERENC_ERROR;
uint32_t version;
tor_assert(desc);
@@ -2644,7 +2644,8 @@ hs_desc_decode_status_t
hs_desc_decode_plaintext(const char *encoded,
hs_desc_plaintext_data_t *plaintext)
{
- int ok = 0, ret = HS_DESC_DECODE_PLAINTEXT_ERROR;
+ int ok = 0;
+ hs_desc_decode_status_t ret = HS_DESC_DECODE_PLAINTEXT_ERROR;
memarea_t *area = NULL;
smartlist_t *tokens = NULL;
size_t encoded_len;
diff --git a/src/feature/hs/hs_descriptor.h b/src/feature/hs/hs_descriptor.h
index ca87972de1..22517470c1 100644
--- a/src/feature/hs/hs_descriptor.h
+++ b/src/feature/hs/hs_descriptor.h
@@ -292,17 +292,18 @@ MOCK_DECL(int,
const uint8_t *descriptor_cookie,
char **encoded_out));
-int hs_desc_decode_descriptor(const char *encoded,
+hs_desc_decode_status_t hs_desc_decode_descriptor(const char *encoded,
const hs_subcredential_t *subcredential,
const curve25519_secret_key_t *client_auth_sk,
hs_descriptor_t **desc_out);
-int hs_desc_decode_plaintext(const char *encoded,
+hs_desc_decode_status_t hs_desc_decode_plaintext(const char *encoded,
hs_desc_plaintext_data_t *plaintext);
-int hs_desc_decode_superencrypted(const hs_descriptor_t *desc,
- hs_desc_superencrypted_data_t *desc_out);
-int hs_desc_decode_encrypted(const hs_descriptor_t *desc,
- const curve25519_secret_key_t *client_auth_sk,
- hs_desc_encrypted_data_t *desc_out);
+hs_desc_decode_status_t hs_desc_decode_superencrypted(
+ const hs_descriptor_t *desc,
+ hs_desc_superencrypted_data_t *desc_out);
+hs_desc_decode_status_t hs_desc_decode_encrypted(const hs_descriptor_t *desc,
+ const curve25519_secret_key_t *client_auth_sk,
+ hs_desc_encrypted_data_t *desc_out);
size_t hs_desc_obj_size(const hs_descriptor_t *data);
size_t hs_desc_plaintext_obj_size(const hs_desc_plaintext_data_t *data);