huangcm
2025-02-24 69ed55dec4b2116a19e4cca4393cbc014fce5fb2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* Copyright (c) 2013 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.
 *
 * Utility functions that need to be built as part of the firmware.
 */
 
#include "sysincludes.h"
 
#include "utility.h"
 
int SafeMemcmp(const void *s1, const void *s2, size_t n) {
   const unsigned char *us1 = s1;
   const unsigned char *us2 = s2;
   int result = 0;
 
   if (0 == n)
       return 0;
 
   /*
    * Code snippet without data-dependent branch due to Nate Lawson
    * (nate@root.org) of Root Labs.
    */
   while (n--)
       result |= *us1++ ^ *us2++;
 
   return result != 0;
}