Mercurial > hg > orthanc
view OrthancFramework/Resources/Patches/civetweb-1.16.patch @ 6330:594d3fe48be3 default tip
fix OpenApi
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Wed, 24 Sep 2025 18:15:45 +0200 |
parents | e7e47f3188b8 |
children |
line wrap: on
line source
diff -urEb civetweb-1.16.orig/src/civetweb.c civetweb-1.16/src/civetweb.c --- civetweb-1.16.orig/src/civetweb.c 2025-09-23 15:37:44.946300709 +0200 +++ civetweb-1.16/src/civetweb.c 2025-09-23 22:13:44.809084369 +0200 @@ -573,7 +573,7 @@ #if (_MSC_VER < 1300) #define STRX(x) #x #define STR(x) STRX(x) -#define __func__ __FILE__ ":" STR(__LINE__) +#define __func__ __ORTHANC_FILE__ ":" STR(__LINE__) #define strtoull(x, y, z) ((unsigned __int64)_atoi64(x)) #define strtoll(x, y, z) (_atoi64(x)) #else @@ -1457,14 +1457,14 @@ } -#define mg_malloc(a) mg_malloc_ex(a, NULL, __FILE__, __LINE__) -#define mg_calloc(a, b) mg_calloc_ex(a, b, NULL, __FILE__, __LINE__) -#define mg_realloc(a, b) mg_realloc_ex(a, b, NULL, __FILE__, __LINE__) -#define mg_free(a) mg_free_ex(a, __FILE__, __LINE__) - -#define mg_malloc_ctx(a, c) mg_malloc_ex(a, c, __FILE__, __LINE__) -#define mg_calloc_ctx(a, b, c) mg_calloc_ex(a, b, c, __FILE__, __LINE__) -#define mg_realloc_ctx(a, b, c) mg_realloc_ex(a, b, c, __FILE__, __LINE__) +#define mg_malloc(a) mg_malloc_ex(a, NULL, __ORTHANC_FILE__, __LINE__) +#define mg_calloc(a, b) mg_calloc_ex(a, b, NULL, __ORTHANC_FILE__, __LINE__) +#define mg_realloc(a, b) mg_realloc_ex(a, b, NULL, __ORTHANC_FILE__, __LINE__) +#define mg_free(a) mg_free_ex(a, __ORTHANC_FILE__, __LINE__) + +#define mg_malloc_ctx(a, c) mg_malloc_ex(a, c, __ORTHANC_FILE__, __LINE__) +#define mg_calloc_ctx(a, b, c) mg_calloc_ex(a, b, c, __ORTHANC_FILE__, __LINE__) +#define mg_realloc_ctx(a, b, c) mg_realloc_ex(a, b, c, __ORTHANC_FILE__, __LINE__) #else /* USE_SERVER_STATS */ @@ -15254,13 +15254,30 @@ if (!new_path) { mg_send_http_error(conn, 500, "out or memory"); } else { + /* Start of patch for CVE-2025-55763: https://github.com/civetweb/civetweb/pull/1347 */ + size_t len, max_append; mg_get_request_link(conn, new_path, buflen - 1); - strcat(new_path, "/"); + + len = strlen(new_path); + if (len + 1 < buflen) { + new_path[len] = '/'; + new_path[len + 1] = '\0'; + len++; + } + if (ri->query_string) { - /* Append ? and query string */ - strcat(new_path, "?"); - strcat(new_path, ri->query_string); + if (len + 1 < buflen) { + new_path[len] = '?'; + new_path[len + 1] = '\0'; + len++; } + + /* Append with size of space left for query string + null terminator */ + max_append = buflen - len - 1; + strncat(new_path, ri->query_string, max_append); + } + /* End of patch */ + mg_send_http_redirect(conn, new_path, 301); mg_free(new_path); }