diff --git a/pkg.c b/pkg.c index bbec897..6a284c6 100644 --- a/pkg.c +++ b/pkg.c @@ -337,6 +337,7 @@ int pkg_compare_version(const char *a, const char *b) { char oldch1, oldch2; + char buf1[BUFSIZ], buf2[BUFSIZ]; char *str1, *str2; char *one, *two; int ret; @@ -346,11 +347,11 @@ pkg_compare_version(const char *a, const char *b) if (!strcasecmp(a, b)) return 0; - str1 = PKG_LOCAL_COPY(a); - str2 = PKG_LOCAL_COPY(b); + strlcpy(buf1, a, sizeof buf1); + strlcpy(buf2, b, sizeof buf2); - one = str1; - two = str2; + one = str1 = buf1; + two = str2 = buf2; while (*one && *two) { diff --git a/pkg.h b/pkg.h index c1dbd3c..db8966f 100644 --- a/pkg.h +++ b/pkg.h @@ -56,9 +56,6 @@ typedef struct pkg_fragment_ pkg_fragment_t; #define PKG_FOREACH_LIST_ENTRY_SAFE(head, nextiter, value) \ for ((value) = (head), (nextiter) = (head) != NULL ? (head)->next : NULL; (value) != NULL; (value) = (nextiter), (nextiter) = (nextiter) != NULL ? (nextiter)->next : NULL) -#define PKG_LOCAL_COPY(a) \ - strcpy(alloca(strlen(a) + 1), a) - #define PKG_MIN(a,b) (((a) < (b)) ? (a) : (b)) #define PKG_MAX(a,b) (((a) > (b)) ? (a) : (b))