From: Daniel Stenberg Date: Thu, 1 Jan 2026 17:23:39 +0000 (+0100) Subject: tool_doswin: remove the max length check X-Git-Tag: curl-8_18_0~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb7f5b71e5b3fe1e73f6065c78ad0143ff580916;p=thirdparty%2Fcurl.git tool_doswin: remove the max length check A too long name is likely to cause a problem later anyway and get reported there. We don't enforce file name lengths for any other systems. Assisted-by: Jay Satiro Assisted-by: Viktor Szakats Closes #20143 --- diff --git a/src/tool_doswin.c b/src/tool_doswin.c index a2d6bb81d7..a8098c8a12 100644 --- a/src/tool_doswin.c +++ b/src/tool_doswin.c @@ -103,7 +103,6 @@ SANITIZEcode sanitize_file_name(char ** const sanitized, const char *file_name, char *p, *target; size_t len; SANITIZEcode sc; - size_t max_sanitized_len; if(!sanitized) return SANITIZE_ERR_BAD_ARGUMENT; @@ -113,22 +112,7 @@ SANITIZEcode sanitize_file_name(char ** const sanitized, const char *file_name, if(!file_name) return SANITIZE_ERR_BAD_ARGUMENT; - if(flags & SANITIZE_ALLOW_PATH) -#ifdef MSDOS - max_sanitized_len = PATH_MAX - 1; -#else - /* Windows extended-length path max */ - max_sanitized_len = 32767 - 1; -#endif - else - /* The maximum length of a filename. FILENAME_MAX is often the same as - PATH_MAX, in other words it is 260 and does not discount the path - information therefore we should not use it. */ - max_sanitized_len = (PATH_MAX - 1 > 255) ? 255 : PATH_MAX - 1; - len = strlen(file_name); - if(len > max_sanitized_len) - return SANITIZE_ERR_INVALID_PATH; target = curlx_strdup(file_name); if(!target) @@ -184,12 +168,6 @@ SANITIZEcode sanitize_file_name(char ** const sanitized, const char *file_name, if(sc) return sc; target = p; - len = strlen(target); - - if(len > max_sanitized_len) { - curlx_free(target); - return SANITIZE_ERR_INVALID_PATH; - } #endif if(!(flags & SANITIZE_ALLOW_RESERVED)) { @@ -198,12 +176,6 @@ SANITIZEcode sanitize_file_name(char ** const sanitized, const char *file_name, if(sc) return sc; target = p; - len = strlen(target); - - if(len > max_sanitized_len) { - curlx_free(target); - return SANITIZE_ERR_INVALID_PATH; - } } #ifdef DEBUGBUILD @@ -523,10 +495,6 @@ static SANITIZEcode rename_if_reserved_dos(char ** const sanitized, p_len = strlen(p); /* Prepend a '_' */ - if(len == bufsize - 1) { - curlx_free(buffer); - return SANITIZE_ERR_INVALID_PATH; - } memmove(p + 1, p, p_len + 1); p[0] = '_'; ++p_len; diff --git a/tests/tunit/tool1604.c b/tests/tunit/tool1604.c index ec23984869..3ef332a6ae 100644 --- a/tests/tunit/tool1604.c +++ b/tests/tunit/tool1604.c @@ -179,15 +179,6 @@ static CURLcode test_tool1604(const char *arg) { "COM56", 0, "COM56", SANITIZE_ERR_OK }, - { "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" - "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" - "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" - "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" - "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", - 0, - NULL, SANITIZE_ERR_INVALID_PATH - }, { NULL, 0, NULL, SANITIZE_ERR_BAD_ARGUMENT },