diff options
author | Dan McGee <dan@archlinux.org> | 2011-08-29 06:05:20 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-08-29 06:50:28 +0200 |
commit | 8973875a1fc52ec35c255afd34c9cd7d5c285caa (patch) | |
tree | 12e0fdcfa46d1ec8337a00e43c981ede41bcb41b /lib | |
parent | b221af660d101301606e263cef73b358937516a6 (diff) | |
download | pacman-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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libalpm/deps.c | 6 |
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); |