465ae83692
Based on 1 normalized pattern(s): gnupg is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version gnupg is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa note this code is heavily based on the gnu mp library actually it s the same code with only minor changes in the way the data is stored this is to support the abstraction of an optional secure memory allocation which may be used to avoid revealing of sensitive data due to paging etc the gnu mp library itself is published under the lgpl however i decided to publish this code under the plain gpl extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 14 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190520170856.639982569@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
44 lines
1.3 KiB
C
44 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/* mpihelp-sub.c - MPI helper functions
|
|
* Copyright (C) 1994, 1996 Free Software Foundation, Inc.
|
|
* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
|
*
|
|
* This file is part of GnuPG.
|
|
*
|
|
* Note: This code is heavily based on the GNU MP Library.
|
|
* Actually it's the same code with only minor changes in the
|
|
* way the data is stored; this is to support the abstraction
|
|
* of an optional secure memory allocation which may be used
|
|
* to avoid revealing of sensitive data due to paging etc.
|
|
* The GNU MP Library itself is published under the LGPL;
|
|
* however I decided to publish this code under the plain GPL.
|
|
*/
|
|
|
|
#include "mpi-internal.h"
|
|
|
|
/****************
|
|
* Compare OP1_PTR/OP1_SIZE with OP2_PTR/OP2_SIZE.
|
|
* There are no restrictions on the relative sizes of
|
|
* the two arguments.
|
|
* Return 1 if OP1 > OP2, 0 if they are equal, and -1 if OP1 < OP2.
|
|
*/
|
|
int mpihelp_cmp(mpi_ptr_t op1_ptr, mpi_ptr_t op2_ptr, mpi_size_t size)
|
|
{
|
|
mpi_size_t i;
|
|
mpi_limb_t op1_word, op2_word;
|
|
|
|
for (i = size - 1; i >= 0; i--) {
|
|
op1_word = op1_ptr[i];
|
|
op2_word = op2_ptr[i];
|
|
if (op1_word != op2_word)
|
|
goto diff;
|
|
}
|
|
return 0;
|
|
|
|
diff:
|
|
/* This can *not* be simplified to
|
|
* op2_word - op2_word
|
|
* since that expression might give signed overflow. */
|
|
return (op1_word > op2_word) ? 1 : -1;
|
|
}
|