diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-01-20 14:30:07 +0200 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-01-20 14:30:07 +0200 |
commit | 46430ceb5607ac9e395432648c6a8c1a7cbceaf1 (patch) | |
tree | 21c8b479a06ac2809612f8919cc9c5acf28a0703 | |
parent | aee61d0a0b37e56457d1c4cfd48c04552e9ed315 (diff) | |
download | apk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.tar.gz apk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.tar.bz2 apk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.tar.xz apk-tools-46430ceb5607ac9e395432648c6a8c1a7cbceaf1.zip |
pkg: use absolute filenames for packages
-rw-r--r-- | src/package.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/package.c b/src/package.c index d4147ff..25f09d6 100644 --- a/src/package.c +++ b/src/package.c @@ -13,6 +13,7 @@ #include <fcntl.h> #include <ctype.h> #include <stdio.h> +#include <limits.h> #include <malloc.h> #include <string.h> #include <stdlib.h> @@ -325,12 +326,16 @@ struct apk_package *apk_pkg_read(struct apk_database *db, const char *file) { struct read_info_ctx ctx; struct apk_bstream *bs; + char realfile[PATH_MAX]; + + if (realpath(file, realfile) < 0) + return NULL; ctx.pkg = apk_pkg_new(); if (ctx.pkg == NULL) return NULL; - bs = apk_bstream_from_file(file); + bs = apk_bstream_from_file(realfile); if (bs == NULL) goto err; @@ -355,7 +360,7 @@ struct apk_package *apk_pkg_read(struct apk_database *db, const char *file) }; apk_deps_add(&ctx.pkg->depends, &dep); } - ctx.pkg->filename = strdup(file); + ctx.pkg->filename = strdup(realfile); return ctx.pkg; err: |