summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-08-29 06:05:20 +0200
committerDan McGee <dan@archlinux.org>2011-08-29 06:50:28 +0200
commit8973875a1fc52ec35c255afd34c9cd7d5c285caa (patch)
tree12e0fdcfa46d1ec8337a00e43c981ede41bcb41b
parentb221af660d101301606e263cef73b358937516a6 (diff)
downloadpacman-8973875a1fc52ec35c255afd34c9cd7d5c285caa.tar.gz
pacman-8973875a1fc52ec35c255afd34c9cd7d5c285caa.tar.xz
_alpm_splitdep(): don't pass bogus length value to strndup
If we fell through to the ALPM_DEP_MOD_ANY case, ptr would be NULL, and we would pass (0 - <str>), which is a rather large negative number or bogus positive number, depending on signed/unsigned. Just use strdup in the case where we don't have a ptr available. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/deps.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c
index 47b7637a..e268157a 100644
--- a/lib/libalpm/deps.c
+++ b/lib/libalpm/deps.c
@@ -441,7 +441,11 @@ alpm_depend_t *_alpm_splitdep(const char *depstring)
}
/* copy the right parts to the right places */
- STRNDUP(depend->name, depstring, ptr - depstring, return NULL);
+ if(ptr) {
+ STRNDUP(depend->name, depstring, ptr - depstring, return NULL);
+ } else {
+ STRDUP(depend->name, depstring, return NULL);
+ }
depend->name_hash = _alpm_hash_sdbm(depend->name);
if(version) {
STRDUP(depend->version, version, return NULL);