diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d1f2fa4..091ad289 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -819,7 +819,7 @@ endif() # set(CPACK_PACKAGE_NAME "GmSSL") set(CPACK_PACKAGE_VENDOR "GmSSL develop team") -set(CPACK_PACKAGE_VERSION "3.2.0-dev.1081") +set(CPACK_PACKAGE_VERSION "3.2.0-dev.1082") set(CPACK_PACKAGE_DESCRIPTION_FILE ${PROJECT_SOURCE_DIR}/README.md) set(CPACK_NSIS_MODIFY_PATH ON) include(CPack) diff --git a/include/gmssl/version.h b/include/gmssl/version.h index 90581534..0699546f 100644 --- a/include/gmssl/version.h +++ b/include/gmssl/version.h @@ -18,7 +18,7 @@ extern "C" { #define GMSSL_VERSION_NUM 30200 -#define GMSSL_VERSION_STR "GmSSL 3.2.0-dev.1081" +#define GMSSL_VERSION_STR "GmSSL 3.2.0-dev.1082" int gmssl_version_num(void); const char *gmssl_version_str(void); diff --git a/tools/cmsdecrypt.c b/tools/cmsdecrypt.c index 0041cc2e..d39d03d0 100644 --- a/tools/cmsdecrypt.c +++ b/tools/cmsdecrypt.c @@ -33,7 +33,7 @@ int cmsdecrypt_main(int argc, char **argv) FILE *certfp = NULL; FILE *infp = NULL; FILE *outfp = stdout; - uint8_t cert[1024]; + uint8_t cert[8192]; size_t certlen; size_t inlen; uint8_t *cms = NULL; diff --git a/tools/cmssign.c b/tools/cmssign.c index 2103e466..1f0b0141 100644 --- a/tools/cmssign.c +++ b/tools/cmssign.c @@ -35,7 +35,7 @@ int cmssign_main(int argc, char **argv) FILE *outfp = stdout; SM2_KEY sm2_key; X509_KEY public_key; - uint8_t cert[1024]; + uint8_t cert[8192]; size_t certlen; uint8_t *in = NULL; size_t inlen; diff --git a/tools/sm4_xts.c b/tools/sm4_xts.c index cdf66e29..f5907bc5 100755 --- a/tools/sm4_xts.c +++ b/tools/sm4_xts.c @@ -168,7 +168,7 @@ bad: } } - buflen = data_unit_size * 16; + buflen = (size_t)data_unit_size * 16; if (!(buf = (uint8_t *)malloc(buflen))) { fprintf(stderr, "gmssl %s: malloc failure\n", prog); goto end; diff --git a/tools/tlcp_client.c b/tools/tlcp_client.c index 340110e8..f92c2ff2 100644 --- a/tools/tlcp_client.c +++ b/tools/tlcp_client.c @@ -252,6 +252,11 @@ int tlcp_client_main(int argc, char *argv[]) } else if (!strcmp(*argv, "-host")) { if (--argc < 1) goto bad; host = *(++argv); + // prevent CRLF injection in http request header + if (strchr(host, '\r') || strchr(host, '\n')) { + fprintf(stderr, "%s: invalid characters in '-host' value\n", prog); + return -1; + } } else if (!strcmp(*argv, "-port")) { if (--argc < 1) goto bad; port = atoi(*(++argv)); @@ -334,6 +339,11 @@ int tlcp_client_main(int argc, char *argv[]) } else if (!strcmp(*argv, "-get")) { if (--argc < 1) goto bad; get = *(++argv); + // prevent CRLF injection in http request line + if (strchr(get, '\r') || strchr(get, '\n')) { + fprintf(stderr, "%s: invalid characters in '-get' value\n", prog); + return -1; + } } else if (!strcmp(*argv, "-in")) { if (--argc < 1) goto bad; infile = *(++argv); diff --git a/tools/tls12_client.c b/tools/tls12_client.c index b8500ec5..99584146 100644 --- a/tools/tls12_client.c +++ b/tools/tls12_client.c @@ -241,6 +241,11 @@ int tls12_client_main(int argc, char *argv[]) } else if (!strcmp(*argv, "-host")) { if (--argc < 1) goto bad; host = *(++argv); + // prevent CRLF injection in http request header + if (strchr(host, '\r') || strchr(host, '\n')) { + fprintf(stderr, "%s: invalid characters in '-host' value\n", prog); + return -1; + } } else if (!strcmp(*argv, "-port")) { if (--argc < 1) goto bad; port = atoi(*(++argv)); @@ -320,6 +325,11 @@ int tls12_client_main(int argc, char *argv[]) } else if (!strcmp(*argv, "-get")) { if (--argc < 1) goto bad; get = *(++argv); + // prevent CRLF injection in http request line + if (strchr(get, '\r') || strchr(get, '\n')) { + fprintf(stderr, "%s: invalid characters in '-get' value\n", prog); + return -1; + } } else if (!strcmp(*argv, "-in")) { if (--argc < 1) goto bad; infile = *(++argv); diff --git a/tools/tls13_client.c b/tools/tls13_client.c index 86f946ef..13af7c68 100644 --- a/tools/tls13_client.c +++ b/tools/tls13_client.c @@ -322,6 +322,11 @@ int tls13_client_main(int argc, char *argv[]) } else if (!strcmp(*argv, "-host")) { if (--argc < 1) goto bad; host = *(++argv); + // prevent CRLF injection in http request header + if (strchr(host, '\r') || strchr(host, '\n')) { + fprintf(stderr, "%s: invalid characters in '-host' value\n", prog); + return -1; + } } else if (!strcmp(*argv, "-port")) { if (--argc < 1) goto bad; port = atoi(*(++argv)); @@ -472,6 +477,11 @@ int tls13_client_main(int argc, char *argv[]) } else if (!strcmp(*argv, "-get")) { if (--argc < 1) goto bad; get = *(++argv); + // prevent CRLF injection in http request line + if (strchr(get, '\r') || strchr(get, '\n')) { + fprintf(stderr, "%s: invalid characters in '-get' value\n", prog); + return -1; + } } else if (!strcmp(*argv, "-in")) { if (--argc < 1) goto bad; infile = *(++argv);