logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0004-Avoid-implicit-pointer-sign-conversions.patch (32126B)


  1. From 44bc6dfcdd2581f64fc869c8863dd590ea947033 Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Thu, 2 Apr 2026 23:52:53 -0700
  4. Subject: [PATCH] Avoid implicit pointer sign conversions
  5. s_client_options:
  6. All option values for clr and off used here fit in a 32-bit int,
  7. the largest being SSL_OP_NO_TLSv1_3=0x20000000L, so make these
  8. fields int.
  9. sm4_ctr_cipher:
  10. CRYPTO_ctr128_encrypt expects an unsigned int *, but ctx->num is
  11. an int. Use a local variable with the correct type to avoid aliasing
  12. issues.
  13. addr_validate_path_internal:
  14. length is used twice, its address is passed to
  15. IPAddressFamily_afi_length, expecting an int *, and addr_contains, also
  16. expecting int, so change its type to int.
  17. tls_decrypt_ticket:
  18. hlen is used for the result of HMAC_size. Though the manual documents
  19. this as returning a size_t, it actually returns an int since it
  20. wraps EVP_MD_size, which can return a negative value. HMAC_Final
  21. expects an unsigned int *, so we need a separate variable for the
  22. final length.
  23. tls13_new_session_ticket_recv:
  24. session_id_length is used twice, its address is passed to EVP_Digest
  25. which expects an unsigned int, and then it is saved in
  26. SSL_SESSION.session_id_length, a size_t. So its type from int to
  27. unsigned int.
  28. All other changes simply make explicit the conversions among pointers
  29. to character types already being done. These implicit conversions
  30. are constraint violations in ISO C.
  31. ---
  32. apps/openssl/ca.c | 7 ++++---
  33. apps/openssl/cms.c | 2 +-
  34. apps/openssl/s_client.c | 4 ++--
  35. crypto/asn1/a_object.c | 12 ++++++------
  36. crypto/asn1/a_time.c | 2 +-
  37. crypto/asn1/a_time_tm.c | 22 ++++++++++++----------
  38. crypto/bio/b_dump.c | 2 +-
  39. crypto/bio/bss_mem.c | 4 ++--
  40. crypto/bn/bn_convert.c | 8 ++++----
  41. crypto/bn/bn_print.c | 2 +-
  42. crypto/evp/e_sm4.c | 4 +++-
  43. crypto/ocsp/ocsp_cl.c | 4 ++--
  44. crypto/pkcs7/pk7_attr.c | 2 +-
  45. crypto/x509/x509_addr.c | 2 +-
  46. crypto/x509/x509_constraints.c | 18 +++++++++---------
  47. crypto/x509/x509_obj.c | 10 +++++-----
  48. crypto/x509/x509_utl.c | 8 ++++----
  49. crypto/x509/x509_verify.c | 3 ++-
  50. crypto/x509/x509name.c | 3 ++-
  51. ssl/s3_lib.c | 2 +-
  52. ssl/ssl_clnt.c | 2 +-
  53. ssl/ssl_lib.c | 8 ++++----
  54. ssl/ssl_srvr.c | 2 +-
  55. ssl/ssl_tlsext.c | 3 ++-
  56. ssl/ssl_txt.c | 4 ++--
  57. ssl/t1_lib.c | 4 +++-
  58. ssl/tls13_client.c | 8 ++++----
  59. ssl/tls13_key_schedule.c | 12 ++++++------
  60. ssl/tls13_legacy.c | 2 +-
  61. ssl/tls13_lib.c | 3 ++-
  62. ssl/tls13_record_layer.c | 2 +-
  63. ssl/tls13_server.c | 10 +++++-----
  64. 32 files changed, 96 insertions(+), 85 deletions(-)
  65. diff --git a/apps/openssl/ca.c b/apps/openssl/ca.c
  66. index a2e8a6836..5505983ff 100644
  67. --- a/apps/openssl/ca.c
  68. +++ b/apps/openssl/ca.c
  69. @@ -2197,7 +2197,7 @@ do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
  70. if ((tm = X509_get_notAfter(ret)) == NULL)
  71. goto err;
  72. - row[DB_exp_date] = strndup(ASN1_STRING_get0_data(tm),
  73. + row[DB_exp_date] = strndup((char *)ASN1_STRING_get0_data(tm),
  74. ASN1_STRING_length(tm));
  75. if (row[DB_type] == NULL || row[DB_exp_date] == NULL) {
  76. BIO_printf(bio_err, "Memory allocation failure\n");
  77. @@ -2325,7 +2325,7 @@ do_revoke(X509 *x509, CA_DB *db, int type, char *value)
  78. if ((tm = X509_get_notAfter(x509)) == NULL)
  79. goto err;
  80. - row[DB_exp_date] = strndup(ASN1_STRING_get0_data(tm),
  81. + row[DB_exp_date] = strndup((char *)ASN1_STRING_get0_data(tm),
  82. ASN1_STRING_length(tm));
  83. if (row[DB_type] == NULL || row[DB_exp_date] == NULL) {
  84. BIO_printf(bio_err, "Memory allocation failure\n");
  85. @@ -2489,7 +2489,8 @@ do_updatedb(CA_DB *db)
  86. cnt = -1;
  87. goto err;
  88. }
  89. - a_tm_s = strndup(ASN1_STRING_get0_data(a_tm), ASN1_STRING_length(a_tm));
  90. + a_tm_s = strndup((char *)ASN1_STRING_get0_data(a_tm),
  91. + ASN1_STRING_length(a_tm));
  92. if (a_tm_s == NULL) {
  93. cnt = -1;
  94. goto err;
  95. diff --git a/apps/openssl/cms.c b/apps/openssl/cms.c
  96. index 7430f4c93..a63d6e453 100644
  97. --- a/apps/openssl/cms.c
  98. +++ b/apps/openssl/cms.c
  99. @@ -1512,7 +1512,7 @@ cms_main(int argc, char **argv)
  100. cfg.secret_keyid = NULL;
  101. }
  102. if (cfg.pwri_pass != NULL) {
  103. - pwri_tmp = strdup(cfg.pwri_pass);
  104. + pwri_tmp = (unsigned char *)strdup((char *)cfg.pwri_pass);
  105. if (pwri_tmp == NULL)
  106. goto end;
  107. if (CMS_add0_recipient_password(cms, -1, NID_undef,
  108. diff --git a/apps/openssl/s_client.c b/apps/openssl/s_client.c
  109. index 2b05facc1..d12423d0f 100644
  110. --- a/apps/openssl/s_client.c
  111. +++ b/apps/openssl/s_client.c
  112. @@ -194,7 +194,7 @@ static struct {
  113. char *cert_file;
  114. int cert_format;
  115. char *cipher;
  116. - unsigned int clr;
  117. + int clr;
  118. char *connect;
  119. int crlf;
  120. int debug;
  121. @@ -215,7 +215,7 @@ static struct {
  122. int nbio_test;
  123. int no_servername;
  124. char *npn_in;
  125. - unsigned int off;
  126. + int off;
  127. char *passarg;
  128. int peekaboo;
  129. char *port;
  130. diff --git a/crypto/asn1/a_object.c b/crypto/asn1/a_object.c
  131. index 333ac6034..25e7a2ae6 100644
  132. --- a/crypto/asn1/a_object.c
  133. +++ b/crypto/asn1/a_object.c
  134. @@ -182,7 +182,7 @@ oid_add_arc_txt(CBB *cbb, uint64_t arc, int first)
  135. n = snprintf(s, sizeof(s), fmt, (unsigned long long)arc);
  136. if (n < 0 || (size_t)n >= sizeof(s))
  137. return 0;
  138. - if (!CBB_add_bytes(cbb, s, n))
  139. + if (!CBB_add_bytes(cbb, (uint8_t *)s, n))
  140. return 0;
  141. return 1;
  142. @@ -343,7 +343,7 @@ a2d_ASN1_OBJECT(unsigned char *out, int out_len, const char *in, int in_len)
  143. if (in_len <= 0)
  144. goto err;
  145. - CBS_init(&cbs, in, in_len);
  146. + CBS_init(&cbs, (uint8_t *)in, in_len);
  147. if (!CBB_init(&cbb, 0))
  148. goto err;
  149. @@ -401,7 +401,7 @@ i2t_ASN1_OBJECT_name(const ASN1_OBJECT *aobj, CBB *cbb, const char **out_name)
  150. *out_name = name;
  151. - if (!CBB_add_bytes(cbb, name, strlen(name)))
  152. + if (!CBB_add_bytes(cbb, (uint8_t *)name, strlen(name)))
  153. return 0;
  154. /* NUL terminate. */
  155. @@ -448,7 +448,7 @@ i2t_ASN1_OBJECT_internal(const ASN1_OBJECT *aobj, char *buf, int buf_len, int no
  156. if (!CBB_finish(&cbb, &data, &data_len))
  157. goto err;
  158. - ret = strlcpy(buf, data, buf_len);
  159. + ret = strlcpy(buf, (char *)data, buf_len);
  160. err:
  161. CBB_cleanup(&cbb);
  162. free(data);
  163. @@ -474,7 +474,7 @@ t2i_ASN1_OBJECT_internal(const char *oid)
  164. memset(&cbb, 0, sizeof(cbb));
  165. - CBS_init(&cbs, oid, strlen(oid));
  166. + CBS_init(&cbs, (uint8_t *)oid, strlen(oid));
  167. if (!CBB_init(&cbb, 0))
  168. goto err;
  169. @@ -521,7 +521,7 @@ i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *aobj)
  170. if (!CBB_finish(&cbb, &data, &data_len))
  171. goto err;
  172. - ret = BIO_write(bp, data, strlen(data));
  173. + ret = BIO_write(bp, data, strlen((char *)data));
  174. err:
  175. CBB_cleanup(&cbb);
  176. diff --git a/crypto/asn1/a_time.c b/crypto/asn1/a_time.c
  177. index 3deff56ed..10634c067 100644
  178. --- a/crypto/asn1/a_time.c
  179. +++ b/crypto/asn1/a_time.c
  180. @@ -99,7 +99,7 @@ ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm)
  181. time_t now;
  182. if (s != NULL)
  183. - return ASN1_time_parse(s->data, s->length, tm, 0) != -1;
  184. + return ASN1_time_parse((char *)s->data, s->length, tm, 0) != -1;
  185. time(&now);
  186. memset(tm, 0, sizeof(*tm));
  187. diff --git a/crypto/asn1/a_time_tm.c b/crypto/asn1/a_time_tm.c
  188. index dd2893167..c0e0d6245 100644
  189. --- a/crypto/asn1/a_time_tm.c
  190. +++ b/crypto/asn1/a_time_tm.c
  191. @@ -96,7 +96,7 @@ tm_to_gentime(struct tm *tm, ASN1_TIME *atime)
  192. }
  193. free(atime->data);
  194. - atime->data = time_str;
  195. + atime->data = (unsigned char *)time_str;
  196. atime->length = GENTIME_LENGTH;
  197. atime->type = V_ASN1_GENERALIZEDTIME;
  198. @@ -122,7 +122,7 @@ tm_to_utctime(struct tm *tm, ASN1_TIME *atime)
  199. }
  200. free(atime->data);
  201. - atime->data = time_str;
  202. + atime->data = (unsigned char *)time_str;
  203. atime->length = UTCTIME_LENGTH;
  204. atime->type = V_ASN1_UTCTIME;
  205. @@ -293,7 +293,7 @@ ASN1_time_parse(const char *bytes, size_t len, struct tm *tm, int mode)
  206. if (bytes == NULL)
  207. return -1;
  208. - CBS_init(&cbs, bytes, len);
  209. + CBS_init(&cbs, (uint8_t *)bytes, len);
  210. if (CBS_len(&cbs) == UTCTIME_LENGTH)
  211. type = V_ASN1_UTCTIME;
  212. @@ -401,7 +401,8 @@ ASN1_TIME_check(const ASN1_TIME *t)
  213. {
  214. if (t->type != V_ASN1_GENERALIZEDTIME && t->type != V_ASN1_UTCTIME)
  215. return 0;
  216. - return t->type == ASN1_time_parse(t->data, t->length, NULL, t->type);
  217. + return t->type == ASN1_time_parse((char *)t->data, t->length, NULL,
  218. + t->type);
  219. }
  220. LCRYPTO_ALIAS(ASN1_TIME_check);
  221. @@ -414,7 +415,7 @@ ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, ASN1_GENERALIZEDTIME **out)
  222. if (t->type != V_ASN1_GENERALIZEDTIME && t->type != V_ASN1_UTCTIME)
  223. goto err;
  224. - if (t->type != ASN1_time_parse(t->data, t->length, &tm, t->type))
  225. + if (t->type != ASN1_time_parse((char *)t->data, t->length, &tm, t->type))
  226. goto err;
  227. if (out == NULL || (agt = *out) == NULL)
  228. @@ -460,7 +461,7 @@ ASN1_TIME_cmp_time_t_internal(const ASN1_TIME *s, time_t t2, int mode)
  229. * one of those pervasive things from OpenSSL we must continue with.
  230. */
  231. - if (ASN1_time_parse(s->data, s->length, &tm1, mode) == -1)
  232. + if (ASN1_time_parse((char *)s->data, s->length, &tm1, mode) == -1)
  233. return -2;
  234. if (!asn1_time_time_t_to_tm(&t2, &tm2))
  235. @@ -480,10 +481,10 @@ ASN1_TIME_compare(const ASN1_TIME *t1, const ASN1_TIME *t2)
  236. if (t2->type != V_ASN1_UTCTIME && t2->type != V_ASN1_GENERALIZEDTIME)
  237. return -2;
  238. - if (ASN1_time_parse(t1->data, t1->length, &tm1, t1->type) == -1)
  239. + if (ASN1_time_parse((char *)t1->data, t1->length, &tm1, t1->type) == -1)
  240. return -2;
  241. - if (ASN1_time_parse(t2->data, t2->length, &tm2, t2->type) == -1)
  242. + if (ASN1_time_parse((char *)t2->data, t2->length, &tm2, t2->type) == -1)
  243. return -2;
  244. return ASN1_time_tm_cmp(&tm1, &tm2);
  245. @@ -511,7 +512,7 @@ ASN1_UTCTIME_check(const ASN1_UTCTIME *d)
  246. {
  247. if (d->type != V_ASN1_UTCTIME)
  248. return 0;
  249. - return d->type == ASN1_time_parse(d->data, d->length, NULL, d->type);
  250. + return d->type == ASN1_time_parse((char *)d->data, d->length, NULL, d->type);
  251. }
  252. LCRYPTO_ALIAS(ASN1_UTCTIME_check);
  253. @@ -557,7 +558,8 @@ ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *d)
  254. {
  255. if (d->type != V_ASN1_GENERALIZEDTIME)
  256. return 0;
  257. - return d->type == ASN1_time_parse(d->data, d->length, NULL, d->type);
  258. + return d->type == ASN1_time_parse((char *)d->data, d->length, NULL,
  259. + d->type);
  260. }
  261. LCRYPTO_ALIAS(ASN1_GENERALIZEDTIME_check);
  262. diff --git a/crypto/bio/b_dump.c b/crypto/bio/b_dump.c
  263. index 3f673205c..40b09dc23 100644
  264. --- a/crypto/bio/b_dump.c
  265. +++ b/crypto/bio/b_dump.c
  266. @@ -86,7 +86,7 @@ BIO_dump_indent(BIO *bio, const char *s, int len, int indent)
  267. if (len < 0)
  268. goto err;
  269. - CBS_init(&cbs, s, len);
  270. + CBS_init(&cbs, (uint8_t *)s, len);
  271. if (indent < 0)
  272. indent = 0;
  273. diff --git a/crypto/bio/bss_mem.c b/crypto/bio/bss_mem.c
  274. index 0fa6317a2..afcd6b216 100644
  275. --- a/crypto/bio/bss_mem.c
  276. +++ b/crypto/bio/bss_mem.c
  277. @@ -84,7 +84,7 @@ bio_mem_pending(struct bio_mem *bm)
  278. static uint8_t *
  279. bio_mem_read_ptr(struct bio_mem *bm)
  280. {
  281. - return &bm->buf->data[bm->read_offset];
  282. + return (uint8_t *)&bm->buf->data[bm->read_offset];
  283. }
  284. static int mem_new(BIO *bio);
  285. @@ -349,7 +349,7 @@ mem_gets(BIO *bio, char *out, int out_len)
  286. return 0;
  287. }
  288. - p = bio_mem_read_ptr(bm);
  289. + p = (char *)bio_mem_read_ptr(bm);
  290. for (i = 0; i < out_max; i++) {
  291. if (p[i] == '\n') {
  292. i++;
  293. diff --git a/crypto/bn/bn_convert.c b/crypto/bn/bn_convert.c
  294. index ab5bc519c..cb006a209 100644
  295. --- a/crypto/bn/bn_convert.c
  296. +++ b/crypto/bn/bn_convert.c
  297. @@ -261,7 +261,7 @@ BN_asc2bn(BIGNUM **bnp, const char *s)
  298. if ((s_len = strlen(s)) == 0)
  299. return 0;
  300. - CBS_init(&cbs, s, s_len);
  301. + CBS_init(&cbs, (uint8_t *)s, s_len);
  302. /* Handle negative sign. */
  303. if (!CBS_peek_u8(&cbs, &v))
  304. @@ -373,7 +373,7 @@ BN_bn2dec(const BIGNUM *bn)
  305. CBB_cleanup(&cbb);
  306. freezero(data, data_len);
  307. - return s;
  308. + return (char *)s;
  309. }
  310. LCRYPTO_ALIAS(BN_bn2dec);
  311. @@ -476,7 +476,7 @@ BN_dec2bn(BIGNUM **bnp, const char *s)
  312. if ((s_len = strlen(s)) == 0)
  313. return 0;
  314. - CBS_init(&cbs, s, s_len);
  315. + CBS_init(&cbs, (uint8_t *)s, s_len);
  316. return bn_dec2bn_cbs(bnp, &cbs);
  317. }
  318. @@ -677,7 +677,7 @@ BN_hex2bn(BIGNUM **bnp, const char *s)
  319. if ((s_len = strlen(s)) == 0)
  320. return 0;
  321. - CBS_init(&cbs, s, s_len);
  322. + CBS_init(&cbs, (uint8_t *)s, s_len);
  323. return bn_hex2bn_cbs(bnp, &cbs);
  324. }
  325. diff --git a/crypto/bn/bn_print.c b/crypto/bn/bn_print.c
  326. index cd8b66360..655732413 100644
  327. --- a/crypto/bn/bn_print.c
  328. +++ b/crypto/bn/bn_print.c
  329. @@ -82,7 +82,7 @@ bn_print_bignum(BIO *bio, const BIGNUM *bn, int indent)
  330. if (!bn_bn2hex_nosign(bn, &hex, &hex_len))
  331. goto err;
  332. - CBS_init(&cbs, hex, hex_len);
  333. + CBS_init(&cbs, (uint8_t *)hex, hex_len);
  334. if (BN_is_negative(bn)) {
  335. if (BIO_printf(bio, " (Negative)") <= 0)
  336. diff --git a/crypto/evp/e_sm4.c b/crypto/evp/e_sm4.c
  337. index cde2f6c64..9f8b13ed1 100644
  338. --- a/crypto/evp/e_sm4.c
  339. +++ b/crypto/evp/e_sm4.c
  340. @@ -237,9 +237,11 @@ sm4_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in,
  341. size_t len)
  342. {
  343. EVP_SM4_KEY *key = ((EVP_SM4_KEY *)(ctx)->cipher_data);
  344. + unsigned int num;
  345. CRYPTO_ctr128_encrypt(in, out, len, &key->ks, ctx->iv, ctx->buf,
  346. - &ctx->num, (block128_f)SM4_encrypt);
  347. + &num, (block128_f)SM4_encrypt);
  348. + ctx->num = num;
  349. return 1;
  350. }
  351. diff --git a/crypto/ocsp/ocsp_cl.c b/crypto/ocsp/ocsp_cl.c
  352. index 460c1bce5..15a70b1c5 100644
  353. --- a/crypto/ocsp/ocsp_cl.c
  354. +++ b/crypto/ocsp/ocsp_cl.c
  355. @@ -410,7 +410,7 @@ OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
  356. * (such as UTCTIME permitted/required by RFC 5280 for certificates)
  357. */
  358. /* Check that thisUpdate is valid. */
  359. - if (ASN1_time_parse(thisupd->data, thisupd->length, &tm_this,
  360. + if (ASN1_time_parse((char *)thisupd->data, thisupd->length, &tm_this,
  361. V_ASN1_GENERALIZEDTIME) != V_ASN1_GENERALIZEDTIME) {
  362. OCSPerror(OCSP_R_ERROR_IN_THISUPDATE_FIELD);
  363. return 0;
  364. @@ -433,7 +433,7 @@ OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
  365. return 1;
  366. /* Check that nextUpdate is valid. */
  367. - if (ASN1_time_parse(nextupd->data, nextupd->length, &tm_next,
  368. + if (ASN1_time_parse((char *)nextupd->data, nextupd->length, &tm_next,
  369. V_ASN1_GENERALIZEDTIME) != V_ASN1_GENERALIZEDTIME) {
  370. OCSPerror(OCSP_R_ERROR_IN_NEXTUPDATE_FIELD);
  371. return 0;
  372. diff --git a/crypto/pkcs7/pk7_attr.c b/crypto/pkcs7/pk7_attr.c
  373. index f2e17806d..cb6b2e84f 100644
  374. --- a/crypto/pkcs7/pk7_attr.c
  375. +++ b/crypto/pkcs7/pk7_attr.c
  376. @@ -192,7 +192,7 @@ PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t)
  377. }
  378. /* RFC 5652, section 11.3 - UTCTime for the years 1950-2049. */
  379. - if (ASN1_time_parse(tm->data, tm->length, NULL, tm->type) == -1)
  380. + if (ASN1_time_parse((char *)tm->data, tm->length, NULL, tm->type) == -1)
  381. goto err;
  382. if (!PKCS7_add_signed_attribute(si, NID_pkcs9_signingTime, tm->type, tm))
  383. goto err;
  384. diff --git a/crypto/x509/x509_addr.c b/crypto/x509/x509_addr.c
  385. index b4ee92a14..615375dd6 100644
  386. --- a/crypto/x509/x509_addr.c
  387. +++ b/crypto/x509/x509_addr.c
  388. @@ -1875,7 +1875,7 @@ addr_validate_path_internal(X509_STORE_CTX *ctx, STACK_OF(X509) *chain,
  389. X509 *cert = NULL;
  390. int depth = -1;
  391. int i;
  392. - unsigned int length;
  393. + int length;
  394. int ret = 1;
  395. /* We need a non-empty chain to test against. */
  396. diff --git a/crypto/x509/x509_constraints.c b/crypto/x509/x509_constraints.c
  397. index c4f32c9cf..597fdde06 100644
  398. --- a/crypto/x509/x509_constraints.c
  399. +++ b/crypto/x509/x509_constraints.c
  400. @@ -347,7 +347,7 @@ x509_constraints_parse_mailbox(CBS *candidate,
  401. for (i = 0; i < len; i++) {
  402. char c;
  403. - if (!CBS_get_u8(&copy, &c))
  404. + if (!CBS_get_u8(&copy, (uint8_t *)&c))
  405. goto bad;
  406. /* non ascii, cr, lf, or nul is never allowed */
  407. if (!isascii(c) || c == '\r' || c == '\n' || c == '\0')
  408. @@ -445,7 +445,7 @@ x509_constraints_parse_mailbox(CBS *candidate,
  409. }
  410. if (candidate_local == NULL || candidate_domain == NULL)
  411. goto bad;
  412. - CBS_init(&domain_cbs, candidate_domain, strlen(candidate_domain));
  413. + CBS_init(&domain_cbs, (uint8_t *)candidate_domain, strlen(candidate_domain));
  414. if (!x509_constraints_valid_host(&domain_cbs, 0))
  415. goto bad;
  416. @@ -549,7 +549,7 @@ x509_constraints_uri_host(uint8_t *uri, size_t len, char **hostpart)
  417. if (host != NULL)
  418. break;
  419. /* start after the userinfo part */
  420. - host = uri + i + 1;
  421. + host = (char *)uri + i + 1;
  422. continue;
  423. }
  424. /* did we find the end? */
  425. @@ -561,8 +561,8 @@ x509_constraints_uri_host(uint8_t *uri, size_t len, char **hostpart)
  426. if (hostlen == 0)
  427. return 0;
  428. if (host == NULL)
  429. - host = authority;
  430. - CBS_init(&host_cbs, host, hostlen);
  431. + host = (char *)authority;
  432. + CBS_init(&host_cbs, (uint8_t *)host, hostlen);
  433. if (!x509_constraints_valid_host(&host_cbs, 1))
  434. return 0;
  435. if (hostpart != NULL && !CBS_strdup(&host_cbs, hostpart))
  436. @@ -667,8 +667,8 @@ x509_constraints_uri(uint8_t *uri, size_t ulen, uint8_t *constraint,
  437. *error = X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX;
  438. goto err;
  439. }
  440. - ret = x509_constraints_domain(hostpart, strlen(hostpart), constraint,
  441. - len);
  442. + ret = x509_constraints_domain(hostpart, strlen(hostpart),
  443. + (char *)constraint, len);
  444. err:
  445. free(hostpart);
  446. return ret;
  447. @@ -1018,7 +1018,7 @@ x509_constraints_validate(GENERAL_NAME *constraint,
  448. case GEN_DNS:
  449. if (!x509_constraints_valid_domain_constraint(&cbs))
  450. goto err;
  451. - if ((name->name = strndup(bytes, len)) == NULL) {
  452. + if ((name->name = strndup((char *)bytes, len)) == NULL) {
  453. error = X509_V_ERR_OUT_OF_MEM;
  454. goto err;
  455. }
  456. @@ -1064,7 +1064,7 @@ x509_constraints_validate(GENERAL_NAME *constraint,
  457. case GEN_URI:
  458. if (!x509_constraints_valid_domain_constraint(&cbs))
  459. goto err;
  460. - if ((name->name = strndup(bytes, len)) == NULL) {
  461. + if ((name->name = strndup((char *)bytes, len)) == NULL) {
  462. error = X509_V_ERR_OUT_OF_MEM;
  463. goto err;
  464. }
  465. diff --git a/crypto/x509/x509_obj.c b/crypto/x509/x509_obj.c
  466. index db1741cc9..43afeb8cf 100644
  467. --- a/crypto/x509/x509_obj.c
  468. +++ b/crypto/x509/x509_obj.c
  469. @@ -78,13 +78,13 @@ X509_NAME_ENTRY_add_object_cbb(CBB *cbb, const ASN1_OBJECT *aobj)
  470. /* Prefer SN over LN, and fall back to textual representation of OID. */
  471. if ((nid = OBJ_obj2nid(aobj)) != NID_undef) {
  472. if ((str = OBJ_nid2sn(nid)) != NULL)
  473. - return CBB_add_bytes(cbb, str, strlen(str));
  474. + return CBB_add_bytes(cbb, (uint8_t *)str, strlen(str));
  475. if ((str = OBJ_nid2ln(nid)) != NULL)
  476. - return CBB_add_bytes(cbb, str, strlen(str));
  477. + return CBB_add_bytes(cbb, (uint8_t *)str, strlen(str));
  478. }
  479. if (OBJ_obj2txt(buf, sizeof(buf), aobj, 1) == 0)
  480. return 0;
  481. - return CBB_add_bytes(cbb, buf, strlen(buf));
  482. + return CBB_add_bytes(cbb, (uint8_t *)buf, strlen(buf));
  483. }
  484. static int
  485. @@ -183,9 +183,9 @@ X509_NAME_oneline(const X509_NAME *a, char *buf, int len)
  486. goto err;
  487. if (buf == NULL)
  488. - return line;
  489. + return (char *)line;
  490. - strlcpy(buf, line, len);
  491. + strlcpy(buf, (char *)line, len);
  492. free(line);
  493. return buf;
  494. diff --git a/crypto/x509/x509_utl.c b/crypto/x509/x509_utl.c
  495. index 2e60834ed..0746ac0c5 100644
  496. --- a/crypto/x509/x509_utl.c
  497. +++ b/crypto/x509/x509_utl.c
  498. @@ -504,7 +504,7 @@ hex_to_string(const unsigned char *buffer, long len)
  499. err:
  500. CBB_cleanup(&cbb);
  501. - return out;
  502. + return (char *)out;
  503. }
  504. LCRYPTO_ALIAS(hex_to_string);
  505. @@ -569,7 +569,7 @@ string_to_hex(const char *str, long *len)
  506. goto err;
  507. }
  508. - CBS_init(&cbs, str, strlen(str));
  509. + CBS_init(&cbs, (uint8_t *)str, strlen(str));
  510. while (CBS_len(&cbs) > 0) {
  511. /*
  512. * Skipping only a single colon between two pairs of digits
  513. @@ -813,7 +813,7 @@ equal_nocase(const unsigned char *pattern, size_t pattern_len,
  514. skip_prefix(&pattern, &pattern_len, subject, subject_len, flags);
  515. if (pattern_len != subject_len)
  516. return 0;
  517. - return (strncasecmp(pattern, subject, pattern_len) == 0);
  518. + return (strncasecmp((char *)pattern, (char *)subject, pattern_len) == 0);
  519. }
  520. /* Compare using strncmp. */
  521. @@ -828,7 +828,7 @@ equal_case(const unsigned char *pattern, size_t pattern_len,
  522. skip_prefix(&pattern, &pattern_len, subject, subject_len, flags);
  523. if (pattern_len != subject_len)
  524. return 0;
  525. - return (strncmp(pattern, subject, pattern_len) == 0);
  526. + return (strncmp((char *)pattern, (char *)subject, pattern_len) == 0);
  527. }
  528. /*
  529. diff --git a/crypto/x509/x509_verify.c b/crypto/x509/x509_verify.c
  530. index fc3fbc14d..95c6cf359 100644
  531. --- a/crypto/x509/x509_verify.c
  532. +++ b/crypto/x509/x509_verify.c
  533. @@ -55,7 +55,8 @@ x509_verify_asn1_time_to_time_t(const ASN1_TIME *atime, int notAfter,
  534. if (atime == NULL)
  535. return 0;
  536. - type = ASN1_time_parse(atime->data, atime->length, &tm, atime->type);
  537. + type = ASN1_time_parse((char *)atime->data, atime->length, &tm,
  538. + atime->type);
  539. if (type == -1)
  540. return 0;
  541. diff --git a/crypto/x509/x509name.c b/crypto/x509/x509name.c
  542. index e60d8b7a3..5fc4d2ee0 100644
  543. --- a/crypto/x509/x509name.c
  544. +++ b/crypto/x509/x509name.c
  545. @@ -107,7 +107,8 @@ X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, char *buf,
  546. goto err;
  547. /* We still support the "pass NULL to find out how much" API */
  548. if (buf != NULL) {
  549. - if (len <= 0 || !CBS_write_bytes(&cbs, buf, len - 1, NULL))
  550. + if (len <= 0 || !CBS_write_bytes(&cbs, (uint8_t *)buf,
  551. + len - 1, NULL))
  552. goto err;
  553. /* It must be a C string */
  554. buf[text_len] = '\0';
  555. diff --git a/ssl/s3_lib.c b/ssl/s3_lib.c
  556. index bcf26bec4..431af32f2 100644
  557. --- a/ssl/s3_lib.c
  558. +++ b/ssl/s3_lib.c
  559. @@ -1551,7 +1551,7 @@ _SSL_set_tlsext_host_name(SSL *s, const char *name)
  560. if (name == NULL)
  561. return 1;
  562. - CBS_init(&cbs, name, strlen(name));
  563. + CBS_init(&cbs, (uint8_t *)name, strlen(name));
  564. if (!tlsext_sni_is_valid_hostname(&cbs, &is_ip)) {
  565. SSLerror(s, SSL_R_SSL3_EXT_INVALID_SERVERNAME);
  566. diff --git a/ssl/ssl_clnt.c b/ssl/ssl_clnt.c
  567. index 6ef81a170..ffc55e5f9 100644
  568. --- a/ssl/ssl_clnt.c
  569. +++ b/ssl/ssl_clnt.c
  570. @@ -2337,7 +2337,7 @@ ssl3_send_client_change_cipher_spec(SSL *s)
  571. memset(&cbb, 0, sizeof(cbb));
  572. if (s->s3->hs.state == SSL3_ST_CW_CHANGE_A) {
  573. - if (!CBB_init_fixed(&cbb, s->init_buf->data,
  574. + if (!CBB_init_fixed(&cbb, (uint8_t *)s->init_buf->data,
  575. s->init_buf->length))
  576. goto err;
  577. if (!CBB_add_u8(&cbb, SSL3_MT_CCS))
  578. diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
  579. index 630724e67..32ab5332a 100644
  580. --- a/ssl/ssl_lib.c
  581. +++ b/ssl/ssl_lib.c
  582. @@ -2004,12 +2004,12 @@ SSL_export_keying_material(SSL *s, unsigned char *out, size_t out_len,
  583. context = NULL;
  584. context_len = 0;
  585. }
  586. - return tls13_exporter(s->tls13, label, label_len, context,
  587. - context_len, out, out_len);
  588. + return tls13_exporter(s->tls13, (uint8_t *)label, label_len,
  589. + context, context_len, out, out_len);
  590. }
  591. - return tls12_exporter(s, label, label_len, context, context_len,
  592. - use_context, out, out_len);
  593. + return tls12_exporter(s, (uint8_t *)label, label_len, context,
  594. + context_len, use_context, out, out_len);
  595. }
  596. LSSL_ALIAS(SSL_export_keying_material);
  597. diff --git a/ssl/ssl_srvr.c b/ssl/ssl_srvr.c
  598. index af4b20f6c..e877bb3f9 100644
  599. --- a/ssl/ssl_srvr.c
  600. +++ b/ssl/ssl_srvr.c
  601. @@ -2378,7 +2378,7 @@ ssl3_send_server_change_cipher_spec(SSL *s)
  602. memset(&cbb, 0, sizeof(cbb));
  603. if (s->s3->hs.state == SSL3_ST_SW_CHANGE_A) {
  604. - if (!CBB_init_fixed(&cbb, s->init_buf->data,
  605. + if (!CBB_init_fixed(&cbb, (uint8_t *)s->init_buf->data,
  606. s->init_buf->length))
  607. goto err;
  608. if (!CBB_add_u8(&cbb, SSL3_MT_CCS))
  609. diff --git a/ssl/ssl_tlsext.c b/ssl/ssl_tlsext.c
  610. index d879b3304..2b75b0fbb 100644
  611. --- a/ssl/ssl_tlsext.c
  612. +++ b/ssl/ssl_tlsext.c
  613. @@ -808,7 +808,8 @@ tlsext_sni_server_process(SSL *s, uint16_t msg_type, CBS *cbs, int *alert)
  614. *alert = SSL_AD_UNRECOGNIZED_NAME;
  615. goto err;
  616. }
  617. - if (!CBS_mem_equal(&host_name, s->session->tlsext_hostname,
  618. + if (!CBS_mem_equal(&host_name,
  619. + (uint8_t *)s->session->tlsext_hostname,
  620. strlen(s->session->tlsext_hostname))) {
  621. *alert = SSL_AD_UNRECOGNIZED_NAME;
  622. goto err;
  623. diff --git a/ssl/ssl_txt.c b/ssl/ssl_txt.c
  624. index 4ed76c95a..1ad3b9255 100644
  625. --- a/ssl/ssl_txt.c
  626. +++ b/ssl/ssl_txt.c
  627. @@ -170,8 +170,8 @@ SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
  628. if (x->tlsext_tick != NULL) {
  629. if (BIO_puts(bp, "\n TLS session ticket:\n") <= 0)
  630. goto err;
  631. - if (BIO_dump_indent(bp, x->tlsext_tick, x->tlsext_ticklen,
  632. - 4) <= 0)
  633. + if (BIO_dump_indent(bp, (char *)x->tlsext_tick,
  634. + x->tlsext_ticklen, 4) <= 0)
  635. goto err;
  636. }
  637. diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c
  638. index 912bea592..c93107383 100644
  639. --- a/ssl/t1_lib.c
  640. +++ b/ssl/t1_lib.c
  641. @@ -1014,6 +1014,7 @@ tls_decrypt_ticket(SSL *s, CBS *ticket, int *alert, SSL_SESSION **psess)
  642. EVP_CIPHER_CTX *cctx = NULL;
  643. SSL_CTX *tctx = s->initial_ctx;
  644. int slen, hlen, iv_len;
  645. + unsigned int hlenu;
  646. int alert_desc = SSL_AD_INTERNAL_ERROR;
  647. int ret = TLS1_TICKET_FATAL_ERROR;
  648. @@ -1108,8 +1109,9 @@ tls_decrypt_ticket(SSL *s, CBS *ticket, int *alert, SSL_SESSION **psess)
  649. if (HMAC_Update(hctx, CBS_data(&ticket_encdata),
  650. CBS_len(&ticket_encdata)) <= 0)
  651. goto err;
  652. - if (HMAC_Final(hctx, hmac, &hlen) <= 0)
  653. + if (HMAC_Final(hctx, hmac, &hlenu) <= 0)
  654. goto err;
  655. + hlen = hlenu;
  656. if (!CBS_mem_equal(&ticket_hmac, hmac, hlen))
  657. goto derr;
  658. diff --git a/ssl/tls13_client.c b/ssl/tls13_client.c
  659. index 21d396079..a837b85fe 100644
  660. --- a/ssl/tls13_client.c
  661. +++ b/ssl/tls13_client.c
  662. @@ -668,7 +668,7 @@ tls13_server_certificate_verify_recv(struct tls13_ctx *ctx, CBS *cbs)
  663. sizeof(tls13_cert_verify_pad)))
  664. goto err;
  665. if (!CBB_add_bytes(&cbb, tls13_cert_server_verify_context,
  666. - strlen(tls13_cert_server_verify_context)))
  667. + strlen((char *)tls13_cert_server_verify_context)))
  668. goto err;
  669. if (!CBB_add_u8(&cbb, 0))
  670. goto err;
  671. @@ -722,7 +722,7 @@ int
  672. tls13_server_finished_recv(struct tls13_ctx *ctx, CBS *cbs)
  673. {
  674. struct tls13_secrets *secrets = ctx->hs->tls13.secrets;
  675. - struct tls13_secret context = { .data = "", .len = 0 };
  676. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  677. struct tls13_secret finished_key;
  678. uint8_t transcript_hash[EVP_MAX_MD_SIZE];
  679. size_t transcript_hash_len;
  680. @@ -944,7 +944,7 @@ tls13_client_certificate_verify_send(struct tls13_ctx *ctx, CBB *cbb)
  681. sizeof(tls13_cert_verify_pad)))
  682. goto err;
  683. if (!CBB_add_bytes(&sig_cbb, tls13_cert_client_verify_context,
  684. - strlen(tls13_cert_client_verify_context)))
  685. + strlen((char *)tls13_cert_client_verify_context)))
  686. goto err;
  687. if (!CBB_add_u8(&sig_cbb, 0))
  688. goto err;
  689. @@ -1005,7 +1005,7 @@ int
  690. tls13_client_finished_send(struct tls13_ctx *ctx, CBB *cbb)
  691. {
  692. struct tls13_secrets *secrets = ctx->hs->tls13.secrets;
  693. - struct tls13_secret context = { .data = "", .len = 0 };
  694. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  695. struct tls13_secret finished_key = { .data = NULL, .len = 0 };
  696. uint8_t transcript_hash[EVP_MAX_MD_SIZE];
  697. size_t transcript_hash_len;
  698. diff --git a/ssl/tls13_key_schedule.c b/ssl/tls13_key_schedule.c
  699. index 05bcf0f00..19afc7999 100644
  700. --- a/ssl/tls13_key_schedule.c
  701. +++ b/ssl/tls13_key_schedule.c
  702. @@ -160,8 +160,8 @@ tls13_hkdf_expand_label(struct tls13_secret *out, const EVP_MD *digest,
  703. const struct tls13_secret *secret, const char *label,
  704. const struct tls13_secret *context)
  705. {
  706. - return tls13_hkdf_expand_label_with_length(out, digest, secret, label,
  707. - strlen(label), context);
  708. + return tls13_hkdf_expand_label_with_length(out, digest, secret,
  709. + (uint8_t *)label, strlen(label), context);
  710. }
  711. int
  712. @@ -185,7 +185,7 @@ tls13_hkdf_expand_label_with_length(struct tls13_secret *out,
  713. goto err;
  714. if (!CBB_add_u8_length_prefixed(&cbb, &child))
  715. goto err;
  716. - if (!CBB_add_bytes(&child, tls13_plabel, strlen(tls13_plabel)))
  717. + if (!CBB_add_bytes(&child, (uint8_t *)tls13_plabel, strlen(tls13_plabel)))
  718. goto err;
  719. if (!CBB_add_bytes(&child, label, label_len))
  720. goto err;
  721. @@ -362,7 +362,7 @@ tls13_derive_application_secrets(struct tls13_secrets *secrets,
  722. int
  723. tls13_update_client_traffic_secret(struct tls13_secrets *secrets)
  724. {
  725. - struct tls13_secret context = { .data = "", .len = 0 };
  726. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  727. if (!secrets->init_done || !secrets->early_done ||
  728. !secrets->handshake_done || !secrets->schedule_done)
  729. @@ -376,7 +376,7 @@ tls13_update_client_traffic_secret(struct tls13_secrets *secrets)
  730. int
  731. tls13_update_server_traffic_secret(struct tls13_secrets *secrets)
  732. {
  733. - struct tls13_secret context = { .data = "", .len = 0 };
  734. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  735. if (!secrets->init_done || !secrets->early_done ||
  736. !secrets->handshake_done || !secrets->schedule_done)
  737. @@ -423,7 +423,7 @@ tls13_exporter(struct tls13_ctx *ctx, const uint8_t *label, size_t label_len,
  738. /* In TLSv1.3 no context is equivalent to an empty context. */
  739. if (context_value == NULL) {
  740. - context_value = "";
  741. + context_value = (uint8_t *)"";
  742. context_value_len = 0;
  743. }
  744. diff --git a/ssl/tls13_legacy.c b/ssl/tls13_legacy.c
  745. index 6a06330b2..220999745 100644
  746. --- a/ssl/tls13_legacy.c
  747. +++ b/ssl/tls13_legacy.c
  748. @@ -359,7 +359,7 @@ tls13_use_legacy_stack(struct tls13_ctx *ctx)
  749. tls13_handshake_msg_data(ctx->hs_msg, &cbs);
  750. if (!BUF_MEM_grow_clean(s->init_buf, CBS_len(&cbs)))
  751. goto err;
  752. - if (!CBS_write_bytes(&cbs, s->init_buf->data,
  753. + if (!CBS_write_bytes(&cbs, (uint8_t *)s->init_buf->data,
  754. s->init_buf->length, NULL))
  755. goto err;
  756. diff --git a/ssl/tls13_lib.c b/ssl/tls13_lib.c
  757. index c3470b293..5d9f15950 100644
  758. --- a/ssl/tls13_lib.c
  759. +++ b/ssl/tls13_lib.c
  760. @@ -378,7 +378,8 @@ tls13_new_session_ticket_recv(struct tls13_ctx *ctx, CBS *cbs)
  761. uint32_t ticket_lifetime, ticket_age_add;
  762. CBS ticket_nonce, ticket;
  763. SSL_SESSION *sess = NULL;
  764. - int alert, session_id_length;
  765. + int alert;
  766. + unsigned int session_id_length;
  767. ssize_t ret = 0;
  768. memset(&nonce, 0, sizeof(nonce));
  769. diff --git a/ssl/tls13_record_layer.c b/ssl/tls13_record_layer.c
  770. index f5604adbe..9bdd61c91 100644
  771. --- a/ssl/tls13_record_layer.c
  772. +++ b/ssl/tls13_record_layer.c
  773. @@ -467,7 +467,7 @@ static int
  774. tls13_record_layer_set_traffic_key(const EVP_AEAD *aead, const EVP_MD *hash,
  775. struct tls13_record_protection *rp, struct tls13_secret *traffic_key)
  776. {
  777. - struct tls13_secret context = { .data = "", .len = 0 };
  778. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  779. struct tls13_secret key = { .data = NULL, .len = 0 };
  780. int ret = 0;
  781. diff --git a/ssl/tls13_server.c b/ssl/tls13_server.c
  782. index 604dab4cb..2beb72636 100644
  783. --- a/ssl/tls13_server.c
  784. +++ b/ssl/tls13_server.c
  785. @@ -728,7 +728,7 @@ tls13_server_certificate_verify_send(struct tls13_ctx *ctx, CBB *cbb)
  786. sizeof(tls13_cert_verify_pad)))
  787. goto err;
  788. if (!CBB_add_bytes(&sig_cbb, tls13_cert_server_verify_context,
  789. - strlen(tls13_cert_server_verify_context)))
  790. + strlen((char *)tls13_cert_server_verify_context)))
  791. goto err;
  792. if (!CBB_add_u8(&sig_cbb, 0))
  793. goto err;
  794. @@ -783,7 +783,7 @@ int
  795. tls13_server_finished_send(struct tls13_ctx *ctx, CBB *cbb)
  796. {
  797. struct tls13_secrets *secrets = ctx->hs->tls13.secrets;
  798. - struct tls13_secret context = { .data = "", .len = 0 };
  799. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  800. struct tls13_secret finished_key = { .data = NULL, .len = 0 } ;
  801. uint8_t transcript_hash[EVP_MAX_MD_SIZE];
  802. size_t transcript_hash_len;
  803. @@ -840,7 +840,7 @@ int
  804. tls13_server_finished_sent(struct tls13_ctx *ctx)
  805. {
  806. struct tls13_secrets *secrets = ctx->hs->tls13.secrets;
  807. - struct tls13_secret context = { .data = "", .len = 0 };
  808. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  809. /*
  810. * Derive application traffic keys.
  811. @@ -959,7 +959,7 @@ tls13_client_certificate_verify_recv(struct tls13_ctx *ctx, CBS *cbs)
  812. sizeof(tls13_cert_verify_pad)))
  813. goto err;
  814. if (!CBB_add_bytes(&cbb, tls13_cert_client_verify_context,
  815. - strlen(tls13_cert_client_verify_context)))
  816. + strlen((char *)tls13_cert_client_verify_context)))
  817. goto err;
  818. if (!CBB_add_u8(&cbb, 0))
  819. goto err;
  820. @@ -1020,7 +1020,7 @@ int
  821. tls13_client_finished_recv(struct tls13_ctx *ctx, CBS *cbs)
  822. {
  823. struct tls13_secrets *secrets = ctx->hs->tls13.secrets;
  824. - struct tls13_secret context = { .data = "", .len = 0 };
  825. + struct tls13_secret context = { .data = (uint8_t *)"", .len = 0 };
  826. struct tls13_secret finished_key;
  827. uint8_t *verify_data = NULL;
  828. size_t verify_data_len;
  829. --
  830. 2.49.0