From d57373153f86770bda9298b69a2ada8ce676769c Mon Sep 17 00:00:00 2001From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net>
From exec(3):
Undefined behavior and unwarranted assumptions:
• Use of %ld format to print time_t or suseconds_t.
Hello,
Hope this is the right please to sent patches for dpkg. I am currently
trying to get the dpkg test suite to pass for our Alpine Linux dpkg
package. While doing so I noticed a mistake in the test_command_exec() function from t-command.c, the function doesn't set arg0 correctly. This causes the test to fail as our busybox multicall binary (which provides /bin/true) is not capable of finding an applet for "arg 0". Other
invocations of command_exec in dpkg explicitly set arg0 manually too.
The patch is attached as a git-format-patch(1).
The only remaining test failing on Alpine is ./t/dpkg_buildpackage.t it
fails with: ”error: Unmet build dependencies: build-essential:native“.
I guess that's because we don't actually use dpkg and don't have a build-essential package? I disabled the test for now, if there is any
way to make it pass please let me know.
I am not subscribed to the list, please CC me.
Greetings,
Sören
From d57373153f86770bda9298b69a2ada8ce676769c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net>
Date: Thu, 27 Aug 2020 21:43:40 +0200
Subject: [PATCH] t-command: Fix test_command_exec program invocation
From exec(3):
The argument arg0 should point to a filename string that is
associated with the process being started by one of the exec
functions.
Unfortunately, this test sets arg0 to the string "arg 0" this causes the busybox multicall binary on Alpine Linux to assume that the applet "arg
0" (instead of true) should be executed. However, as such an applet does
not exist, the tests fails. This commit fixes the failing test by
setting arg0 correctly (as other parts of the dpkg codebase using the
command API do too).
---
lib/dpkg/t/t-command.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/dpkg/t/t-command.c b/lib/dpkg/t/t-command.c
index 099884560..aeed7a1f2 100644
--- a/lib/dpkg/t/t-command.c
+++ b/lib/dpkg/t/t-command.c
@@ -170,6 +170,7 @@ test_command_exec(void)
command_init(&cmd, "true", "exec test");
+ command_add_arg(&cmd, "true");
command_add_arg(&cmd, "arg 0");
command_add_arg(&cmd, "arg 1");
Noticed one more thing: dpkg uses '%ld' to print values of the time_t
type. This does, however, not work on 32-Bit Alpine Linux architectures (which use musl libc) as musl libc recently switched to a 64-Bit (long
long int) time_t on 32-bit arches. This causes dpkg test failures on
Alpine 32-bit architectures (e.g. armhf).
Sören Tempel <soeren@soeren-tempel.net> wrote:
Hope this is the right please to sent patches for dpkg. I am currently trying to get the dpkg test suite to pass for our Alpine Linux dpkg package. While doing so I noticed a mistake in the test_command_exec() function from t-command.c, the function doesn't set arg0 correctly. This causes the test to fail as our busybox multicall binary (which provides /bin/true) is not capable of finding an applet for "arg 0". Other invocations of command_exec in dpkg explicitly set arg0 manually too.
The patch is attached as a git-format-patch(1).
The only remaining test failing on Alpine is ./t/dpkg_buildpackage.t it fails with: ”error: Unmet build dependencies: build-essential:native“. I guess that's because we don't actually use dpkg and don't have a build-essential package? I disabled the test for now, if there is any
way to make it pass please let me know.
Hi!
Sören Tempel <soeren@soeren-tempel.net> wrote:
Hope this is the right please to sent patches for dpkg. I am currently trying to get the dpkg test suite to pass for our Alpine Linux dpkg package. While doing so I noticed a mistake in the test_command_exec() function from t-command.c, the function doesn't set arg0 correctly. This causes the test to fail as our busybox multicall binary (which provides /bin/true) is not capable of finding an applet for "arg 0". Other invocations of command_exec in dpkg explicitly set arg0 manually too.
The patch is attached as a git-format-patch(1).
Indeed, thanks for the patch! Will include it in git in my next push.
On Fri, 2020-08-28 Guillem Jover <guillem@debian.org> wrote:
Sören Tempel <soeren@soeren-tempel.net> wrote:
Hope this is the right please to sent patches for dpkg. I am currently trying to get the dpkg test suite to pass for our Alpine Linux dpkg package. While doing so I noticed a mistake in the test_command_exec() function from t-command.c, the function doesn't set arg0 correctly. This
causes the test to fail as our busybox multicall binary (which provides /bin/true) is not capable of finding an applet for "arg 0". Other invocations of command_exec in dpkg explicitly set arg0 manually too. The patch is attached as a git-format-patch(1).
Indeed, thanks for the patch! Will include it in git in my next push.
I think this was forgotten about? At Alpine we still need to apply my proposed in order to get the dpkg test suite to pass. Any chance you
could apply it upstream? (:
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 292 |
Nodes: | 16 (2 / 14) |
Uptime: | 184:22:13 |
Calls: | 6,616 |
Files: | 12,165 |
Messages: | 5,314,710 |