]> git.saurik.com Git - apt.git/commitdiff
test framework: More noopchroot fixes
authorJulian Andres Klode <jak@debian.org>
Mon, 14 Dec 2015 12:39:52 +0000 (13:39 +0100)
committerJulian Andres Klode <jak@debian.org>
Mon, 14 Dec 2015 12:40:39 +0000 (13:40 +0100)
Use asprintf() so we have easy error detection and do not depend
on PATH_MAX.

Do not add another separator to the generated path, in both cases
the path inside the chroot is guaranteed to have a leading /
already.

Also pass -Wall to gcc.

test/integration/framework

index ee976aff5dbab2310cc1948accffaa06da3f56de..d52fcdf8779dc91baae986f4fce81bf9d219dd99 100644 (file)
@@ -478,7 +478,6 @@ configdpkgnoopchroot() {
 #include <stdlib.h>
 #include <string.h>
 #include <dlfcn.h>
 #include <stdlib.h>
 #include <string.h>
 #include <dlfcn.h>
-#include <limits.h>
 
 static char * chrootdir = NULL;
 
 
 static char * chrootdir = NULL;
 
@@ -495,16 +494,22 @@ int execvp(const char *file, char *const argv[]) {
        if (chrootdir == NULL || strncmp(file, "/var/lib/dpkg/", strlen("/var/lib/dpkg/")) != 0)
                return func_execvp(file, argv);
        printf("REWRITE execvp call %s into %s\n", file, chrootdir);
        if (chrootdir == NULL || strncmp(file, "/var/lib/dpkg/", strlen("/var/lib/dpkg/")) != 0)
                return func_execvp(file, argv);
        printf("REWRITE execvp call %s into %s\n", file, chrootdir);
-       char newfile[PATH_MAX];
-       snprintf(newfile, sizeof(newfile), "%s/%s", chrootdir, file);
+       char *newfile;
+       if (asprintf(&newfile, "%s%s", chrootdir, file) == -1) {
+               perror("asprintf");
+               return -1;
+       }
        char const * const baseadmindir = "/var/lib/dpkg";
        char const * const baseadmindir = "/var/lib/dpkg";
-       char admindir[PATH_MAX];
-       snprintf(admindir, sizeof(admindir), "%s/%s", chrootdir, baseadmindir);
+       char *admindir;
+       if (asprintf(&admindir, "%s%s", chrootdir, baseadmindir) == -1) {
+               perror("asprintf");
+               return -1;
+       }
        setenv("DPKG_ADMINDIR", admindir, 1);
        return func_execvp(newfile, argv);
 }
 EOF
        setenv("DPKG_ADMINDIR", admindir, 1);
        return func_execvp(newfile, argv);
 }
 EOF
-       testsuccess --nomsg gcc -fPIC -shared -o noopchroot.so noopchroot.c -ldl
+       testsuccess --nomsg gcc -Wall -fPIC -shared -o noopchroot.so noopchroot.c -ldl
 }
 configcompression() {
        while [ -n "$1" ]; do
 }
 configcompression() {
        while [ -n "$1" ]; do