#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
+#include <limits.h>
static char * chrootdir = NULL;
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[strlen(chrootdir) + strlen(file)];
- strcpy(newfile, chrootdir);
- strcat(newfile, file);
+ char newfile[PATH_MAX];
+ snprintf(newfile, sizeof(newfile), "%s/%s", chrootdir, file);
char const * const baseadmindir = "/var/lib/dpkg";
- char admindir[strlen(chrootdir) + strlen(baseadmindir)];
- strcpy(admindir, chrootdir);
- strcat(admindir, baseadmindir);
+ char admindir[PATH_MAX];
+ snprintf(admindir, sizeof(admindir), "%s/%s", chrootdir, baseadmindir);
setenv("DPKG_ADMINDIR", admindir, 1);
return func_execvp(newfile, argv);
}
fi
msggroup
}
+testnosrcpackage() {
+ msggroup 'testnosrcpackage'
+ msgtest "Test for non-existent source packages" "apt-cache showsrc $*"
+ local SHOWPKG="$(aptcache showsrc "$@" 2>&1 | grep '^Package: ')"
+ if [ -n "$SHOWPKG" ]; then
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnosrcpackage.output"
+ echo "$SHOWPKG" >"$OUTPUT"
+ msgfailoutput '' "$OUTPUT"
+ else
+ msgpass
+ fi
+ msggroup
+}
testdpkgstatus() {
msggroup 'testdpkgstatus'
if expr match "$1" "$FILEFLAGS" >/dev/null; then
echo "#### stat(2) of file: $2 ####"
stat "$2" || true
- if test -e "$2"; then
+ if test -d "$2"; then
+ echo "#### The directory contains: $2 ####"
+ ls >&2 "$2" || true
+ elif test -e "$2"; then
echo "#### Complete file: $2 ####"
cat >&2 "$2" || true
fi