Package: src:libs3 Version: 2.0-4 Severity: important Tags: ftbfs patch On Linux _UTSNAME_SYSNAME_LENGTH and _UTSNAME_MACHINE_LENGTH are 65, and the platform string, which is defined as
char platform[_UTSNAME_SYSNAME_LENGTH + 1 + _UTSNAME_MACHINE_LENGTH];
fits into the subsequent snprintf command:
snprintf(userAgentG, sizeof(userAgentG),
"Mozilla/4.0 (Compatible; %s; libs3 %s.%s; %s)",
userAgentInfo, LIBS3_VER_MAJOR, LIBS3_VER_MINOR, platform);
where the target string is defined as:
#define USER_AGENT_SIZE 256
static char userAgentG[USER_AGENT_SIZE];
However, on Hurd _UTSNAME_SYSNAME_LENGTH and _UTSNAME_MACHINE_LENGTH
are 1024, and the compilation fails:
src/request.c:1105:57: error: ‘%s’ directive output may be truncated writing up
to 2048 bytes into a region of size between 211 and 218
[-Werror=format-truncation=]
1105 | "Mozilla/4.0 (Compatible; %s; libs3 %s.%s; %s)",
| ^~
1106 | userAgentInfo, LIBS3_VER_MAJOR, LIBS3_VER_MINOR, platform);
| ~~~~~~~~
src/request.c:1104:5: note: ‘snprintf’ output 40 or more bytes (assuming 2095)
into a destination of size 256
1104 | snprintf(userAgentG, sizeof(userAgentG),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1105 | "Mozilla/4.0 (Compatible; %s; libs3 %s.%s; %s)",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1106 | userAgentInfo, LIBS3_VER_MAJOR, LIBS3_VER_MINOR, platform);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
The attached updated patch (intended to replace the current
debian/patches/utsn.patch has the following change:
-#define USER_AGENT_SIZE 256
+#define USER_AGENT_SIZE 126 + _UTSNAME_SYSNAME_LENGTH + _UTSNAME_MACHINE_LENGTH
This implies no change for Linux (126 + 65 + 65 = 256), but increases
the size to the appropriate size on Hurd.
diff -ur libs3-2.0.orig/src/request.c libs3-2.0/src/request.c
--- libs3-2.0.orig/src/request.c 2011-09-28 10:16:09.000000000 +0200
+++ libs3-2.0/src/request.c 2025-04-27 13:12:52.000000000 +0200
@@ -35,7 +35,7 @@
#include "util.h"
-#define USER_AGENT_SIZE 256
+#define USER_AGENT_SIZE 126 + _UTSNAME_SYSNAME_LENGTH + _UTSNAME_MACHINE_LENGTH
#define REQUEST_STACK_SIZE 32
static char userAgentG[USER_AGENT_SIZE];
@@ -1089,7 +1089,7 @@
userAgentInfo = "Unknown";
}
- char platform[96];
+ char platform[_UTSNAME_SYSNAME_LENGTH + 1 + _UTSNAME_MACHINE_LENGTH];
struct utsname utsn;
if (uname(&utsn)) {
strncpy(platform, "Unknown", sizeof(platform));
signature.asc
Description: This is a digitally signed message part

