]> granicus.if.org Git - transmission/commitdiff
(trunk libT) #5316 'UMR in quark, tr-getopt code': fixed.
authorJordan Lee <jordan@transmissionbt.com>
Sat, 13 Apr 2013 18:29:56 +0000 (18:29 +0000)
committerJordan Lee <jordan@transmissionbt.com>
Sat, 13 Apr 2013 18:29:56 +0000 (18:29 +0000)
libtransmission/quark.c
libtransmission/tr-getopt.c

index f0381156d118f64c8a6fc281fe6ec131b8bbca94..dbd7f9de5739334655471834f092f32876ea1de2 100644 (file)
@@ -399,7 +399,7 @@ compareKeys (const void * va, const void * vb)
   const struct tr_key_struct * a = va;
   const struct tr_key_struct * b = vb;
 
-  ret = memcmp (a->str, b->str, a->len);
+  ret = memcmp (a->str, b->str, MIN (a->len, b->len));
 
   if (!ret && (a->len != b->len))
     ret = a->len < b->len ? -1 : 1;
index 1734db33235ff9228a6c26a5eb460902957b2a70..b528034a2aed43417b5e6285aaebe6ca4b0a788c 100644 (file)
@@ -149,8 +149,10 @@ findOption (const tr_option * opts,
     {
         size_t len = o->longName ? strlen (o->longName) : 0;
 
-        if ((matchlen < len) && !memcmp (str, "--", 2)
-          && !memcmp (str + 2, o->longName, len)
+        if ((matchlen < len)
+          && (str[0] == '-')
+          && (str[1] == '-')
+          && !strncmp (str+2, o->longName, len)
           && (str[len + 2] == '\0' || (o->has_arg && str[len + 2] == '=')))
         {
             matchlen = len;
@@ -160,8 +162,9 @@ findOption (const tr_option * opts,
 
         len = o->shortName ? strlen (o->shortName) : 0;
 
-        if ((matchlen < len) && !memcmp (str, "-", 1)
-          && !memcmp (str + 1, o->shortName, len)
+        if ((matchlen < len)
+          && (str[0] == '-')
+          && !strncmp (str+1, o->shortName, len)
           && (str[len + 1] == '\0' || o->has_arg))
         {
             matchlen = len;