Merge branch 'master' into jennifer/trp-devel
[trust_router.git] / common / tr_name.c
index dccf0d4..8837b02 100644 (file)
@@ -55,6 +55,9 @@ TR_NAME *tr_new_name (const char *name)
     new->len = strlen(name);
     if (new->buf = malloc((new->len)+1)) {
       strcpy(new->buf, name);
+    } else {
+      free(new);
+      new=NULL;
     }
   }
   return new;
@@ -80,12 +83,22 @@ TR_NAME *tr_dup_name (TR_NAME *from)
 
 int tr_name_cmp(TR_NAME *one, TR_NAME *two)
 {
-  if (one->len != two->len)
-    return 1;
-  else {
-    /* lengths equal */
-    return strncmp(one->buf, two->buf, one->len);
+  int len=one->len;
+  int cmp=0;
+
+  if (two->len<one->len)
+    len=two->len; /* len now min(one->len,two->len) */
+
+  cmp=strncmp(one->buf, two->buf, len);
+  if (cmp==0) {
+    if (one->len<two->len)
+      return -1;
+    else if (one->len==two->len)
+      return 0;
+    else
+      return 1;
   }
+  return cmp;
 }
 
 void tr_name_strlcat(char *dest, const TR_NAME *src, size_t len)
@@ -109,5 +122,3 @@ char * tr_name_strdup(TR_NAME *src)
   }
   return s;
 }
-
-