Project homepage Mailing List  Warmcat.com  API Docs  Github Mirror 
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1752331263, "reponame":"openssl", "desc":"OpenSSL", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/openssl", "f":3, "items": [ {"schema":"libjg2-1", "cid":"68ebff7816e4b3252f69a6590ad8dbae", "commit": {"type":"commit", "time": 1485771503, "time_ofs": 0, "oid_tree": { "oid": "469a67467728eb8622cef61936521b2eadb707b7", "alias": []}, "oid":{ "oid": "ddf6ec006963d49e8b0dce55fe22fb8e844c3fbf", "alias": []}, "msg": "Make the \u0022ticket\u0022 function return codes clearer", "sig_commit": { "git_time": { "time": 1485771503, "offset": 0 }, "name": "Matt Caswell", "email": "matt@openssl.org", "md5": "10f7b441a32d5790efad9fc68cae4af2" }, "sig_author": { "git_time": { "time": 1484928087, "offset": 0 }, "name": "Matt Caswell", "email": "matt@openssl.org", "md5": "10f7b441a32d5790efad9fc68cae4af2" }}, "body": "Make the \u0022ticket\u0022 function return codes clearer\n\nRemove \u0022magic\u0022 return values and use an enum instead.\n\nReviewed-by: Rich Salz \u003crsalz@openssl.org\u003e\n(Merged from https://github.com/openssl/openssl/pull/2259)" , "diff": "diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h\nindex a59683b..e74c0f4 100644\n--- a/ssl/ssl_locl.h\n+++ b/ssl/ssl_locl.h\n@@ -2191,18 +2191,24 @@ __owur int tls1_get_curvelist(SSL *s, int sess, const unsigned char **pcurves,\n \n void ssl_set_default_md(SSL *s);\n __owur int tls1_set_server_sigalgs(SSL *s);\n-__owur int tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n- SSL_SESSION **ret);\n-\n-/* Return codes for tls_decrypt_ticket */\n-#define TICKET_FATAL_ERR_MALLOC -2\n-#define TICKET_FATAL_ERR_OTHER -1\n-#define TICKET_NO_DECRYPT 2\n-#define TICKET_SUCCESS 3\n-#define TICKET_SUCCESS_RENEW 4\n-__owur int tls_decrypt_ticket(SSL *s, const unsigned char *etick,\n- size_t eticklen, const unsigned char *sess_id,\n- size_t sesslen, SSL_SESSION **psess);\n+\n+/* Return codes for tls_get_ticket_from_client() and tls_decrypt_ticket() */\n+typedef enum ticket_en {\n+ TICKET_FATAL_ERR_MALLOC,\n+ TICKET_FATAL_ERR_OTHER,\n+ TICKET_NONE,\n+ TICKET_EMPTY,\n+ TICKET_NO_DECRYPT,\n+ TICKET_SUCCESS,\n+ TICKET_SUCCESS_RENEW\n+} TICKET_RETURN;\n+\n+__owur TICKET_RETURN tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n+ SSL_SESSION **ret);\n+__owur TICKET_RETURN tls_decrypt_ticket(SSL *s, const unsigned char *etick,\n+ size_t eticklen,\n+ const unsigned char *sess_id,\n+ size_t sesslen, SSL_SESSION **psess);\n \n __owur int tls_use_ticket(SSL *s);\n \ndiff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c\nindex 2ef0006..c0fc8b3 100644\n--- a/ssl/ssl_sess.c\n+++ b/ssl/ssl_sess.c\n@@ -465,7 +465,7 @@ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello)\n SSL_SESSION *ret \u003d NULL;\n int fatal \u003d 0;\n int try_session_cache \u003d 0;\n- int r;\n+ TICKET_RETURN r;\n \n if (SSL_IS_TLS13(s)) {\n int al;\n@@ -479,18 +479,18 @@ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello)\n /* sets s-\u003eext.ticket_expected */\n r \u003d tls_get_ticket_from_client(s, hello, \u0026ret);\n switch (r) {\n- case -1: /* Error during processing */\n+ case TICKET_FATAL_ERR_MALLOC:\n+ case TICKET_FATAL_ERR_OTHER: /* Error during processing */\n fatal \u003d 1;\n goto err;\n- case 0: /* No ticket found */\n- case 1: /* Zero length ticket found */\n+ case TICKET_NONE: /* No ticket found */\n+ case TICKET_EMPTY: /* Zero length ticket found */\n try_session_cache \u003d 1;\n- break; /* Ok to carry on processing session id. */\n- case 2: /* Ticket found but not decrypted. */\n- case 3: /* Ticket decrypted, *ret has been set. */\n+ break; /* Ok to carry on processing session id. */\n+ case TICKET_NO_DECRYPT: /* Ticket found but not decrypted. */\n+ case TICKET_SUCCESS: /* Ticket decrypted, *ret has been set. */\n+ case TICKET_SUCCESS_RENEW:\n break;\n- default:\n- abort();\n }\n }\n \ndiff --git a/ssl/t1_lib.c b/ssl/t1_lib.c\nindex b0df32b..ffde4ee 100644\n--- a/ssl/t1_lib.c\n+++ b/ssl/t1_lib.c\n@@ -1049,8 +1049,8 @@ int tls1_set_server_sigalgs(SSL *s)\n * s-\u003ectx-\u003eext.ticket_key_cb asked to renew the client's ticket.\n * Otherwise, s-\u003eext.ticket_expected is set to 0.\n */\n-int tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n- SSL_SESSION **ret)\n+TICKET_RETURN tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n+ SSL_SESSION **ret)\n {\n int retv;\n size_t size;\n@@ -1065,11 +1065,11 @@ int tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n * resumption.\n */\n if (s-\u003eversion \u003c\u003d SSL3_VERSION || !tls_use_ticket(s))\n- return 0;\n+ return TICKET_NONE;\n \n ticketext \u003d \u0026hello-\u003epre_proc_exts[TLSEXT_IDX_session_ticket];\n if (!ticketext-\u003epresent)\n- return 0;\n+ return TICKET_NONE;\n \n size \u003d PACKET_remaining(\u0026ticketext-\u003edata);\n if (size \u003d\u003d 0) {\n@@ -1078,7 +1078,7 @@ int tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n * one.\n */\n s-\u003eext.ticket_expected \u003d 1;\n- return 1;\n+ return TICKET_EMPTY;\n }\n if (s-\u003eext.session_secret_cb) {\n /*\n@@ -1087,7 +1087,7 @@ int tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n * abbreviated handshake based on external mechanism to\n * calculate the master secret later.\n */\n- return 2;\n+ return TICKET_NO_DECRYPT;\n }\n \n retv \u003d tls_decrypt_ticket(s, PACKET_data(\u0026ticketext-\u003edata), size,\n@@ -1095,17 +1095,17 @@ int tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n switch (retv) {\n case TICKET_NO_DECRYPT: /* ticket couldn't be decrypted */\n s-\u003eext.ticket_expected \u003d 1;\n- return 2;\n+ return TICKET_NO_DECRYPT;\n \n case TICKET_SUCCESS: /* ticket was decrypted */\n- return 3;\n+ return TICKET_SUCCESS;\n \n case TICKET_SUCCESS_RENEW: /* ticket decrypted but need to renew */\n s-\u003eext.ticket_expected \u003d 1;\n- return 3;\n+ return TICKET_SUCCESS;\n \n default: /* fatal error */\n- return -1;\n+ return TICKET_FATAL_ERR_OTHER;\n }\n }\n \n@@ -1128,19 +1128,15 @@ int tls_get_ticket_from_client(SSL *s, CLIENTHELLO_MSG *hello,\n * set.\n * TICKET_SUCCESS_RENEW: same as 3, but the ticket needs to be renewed\n */\n-#define TICKET_FATAL_ERR_MALLOC -2\n-#define TICKET_FATAL_ERR_OTHER -1\n-#define TICKET_NO_DECRYPT 2\n-#define TICKET_SUCCESS 3\n-#define TICKET_SUCCESS_RENEW 4\n-int tls_decrypt_ticket(SSL *s, const unsigned char *etick, size_t eticklen,\n- const unsigned char *sess_id, size_t sesslen,\n- SSL_SESSION **psess)\n+TICKET_RETURN tls_decrypt_ticket(SSL *s, const unsigned char *etick,\n+ size_t eticklen, const unsigned char *sess_id,\n+ size_t sesslen, SSL_SESSION **psess)\n {\n SSL_SESSION *sess;\n unsigned char *sdec;\n const unsigned char *p;\n- int slen, renew_ticket \u003d 0, ret \u003d TICKET_FATAL_ERR_OTHER, declen;\n+ int slen, renew_ticket \u003d 0, declen;\n+ TICKET_RETURN ret \u003d TICKET_FATAL_ERR_OTHER;\n size_t mlen;\n unsigned char tick_hmac[EVP_MAX_MD_SIZE];\n HMAC_CTX *hctx \u003d NULL;\n","s":{"c":1752331263,"u": 32990}} ],"g": 33959,"chitpc": 0,"ehitpc": 0,"indexed":0 , "ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}