[pacman-dev] [PATCH] _alpm_splitdep(): don't pass bogus length value to strndup

Dan McGee dan at archlinux.org
Mon Aug 29 00:07:04 EDT 2011


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 at archlinux.org>
---
 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 47b7637..e268157 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);
-- 
1.7.6



More information about the pacman-dev mailing list