Add unit tests for utility.c

Also fixes returned value from Memset().  And SafeMemcmp() should
return 0 (equal) if comparing 0 bytes, to match the behavior of memcmp().

BUG=chromium-os:17564
TEST=make && make runtests

Change-Id: Id43e70eecf04815216e1fd952271af35e0a66396
Reviewed-on: http://gerrit.chromium.org/gerrit/6539
Reviewed-by: Stefan Reinauer <reinauer@google.com>
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Tested-by: Randall Spangler <rspangler@chromium.org>
diff --git a/firmware/include/utility.h b/firmware/include/utility.h
index 7efbd49..8676345 100644
--- a/firmware/include/utility.h
+++ b/firmware/include/utility.h
@@ -64,12 +64,16 @@
 /* Implementations of the functions below must be built as part of the firmware
  * and defined in lib/utility.c */
 
-/* Set [n] bytes starting at [s] to [c]. */
-void* Memset(void *dest, const uint8_t c, uint64_t n);
+/* Set [n] bytes starting at [s] to [c].  Returns dest. */
+void* Memset(void* dest, const uint8_t c, uint64_t n);
 
-/* Compare [n] bytes starting at [s1] with [s2] and return 0 if they match,
- * 1 if they don't. Time taken to perform the comparison is only dependent on
- * [n] and not on the relationship of the match between [s1] and [s2].
+/* Compare [n] bytes starting at [s1] with [s2] and return 0 if they
+ * match, 1 if they don't.  Returns 0 if n=0, since no bytes mismatched.
+ * Time taken to perform the comparison is only dependent on [n] and
+ * not on the relationship of the match between [s1] and [s2].
+ *
+ * Note that unlike Memcmp(), this only indicates inequality, not
+ * whether s1 is less than or greater than s2.
  */
 int SafeMemcmp(const void* s1, const void* s2, size_t n);
 
diff --git a/firmware/lib/utility.c b/firmware/lib/utility.c
index 3f3ed5d..7a2370b 100644
--- a/firmware/lib/utility.c
+++ b/firmware/lib/utility.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  *
@@ -13,7 +13,7 @@
   while (n--) {
     *dest++ = c;
   }
-  return dest;
+  return d;
 }
 
 int SafeMemcmp(const void* s1, const void* s2, size_t n) {
@@ -22,7 +22,7 @@
   int result = 0;
 
   if (0 == n)
-    return 1;
+    return 0;
 
   /* Code snippet without data-dependent branch due to
    * Nate Lawson (nate@root.org) of Root Labs. */