1/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
4 *
5 * Utility functions that need to be built as part of the firmware.
6 */
7
8#include "sysincludes.h"
9
10#include "utility.h"
11
12int SafeMemcmp(const void *s1, const void *s2, size_t n) {
13	const unsigned char *us1 = s1;
14	const unsigned char *us2 = s2;
15	int result = 0;
16
17	if (0 == n)
18		return 0;
19
20	/*
21	 * Code snippet without data-dependent branch due to Nate Lawson
22	 * (nate@root.org) of Root Labs.
23	 */
24	while (n--)
25		result |= *us1++ ^ *us2++;
26
27	return result != 0;
28}
29