safec
2.1
Safe C Library - ISO TR24731 Bounds Checking Interface
strcmpfld_s.c
Go to the documentation of this file.
1
/*------------------------------------------------------------------
2
* strcmpfld_s.c
3
*
4
* November 2008, Bo Berry
5
*
6
* Copyright (c) 2008-2011 by Cisco Systems, Inc
7
* All rights reserved.
8
*
9
* Permission is hereby granted, free of charge, to any person
10
* obtaining a copy of this software and associated documentation
11
* files (the "Software"), to deal in the Software without
12
* restriction, including without limitation the rights to use,
13
* copy, modify, merge, publish, distribute, sublicense, and/or
14
* sell copies of the Software, and to permit persons to whom the
15
* Software is furnished to do so, subject to the following
16
* conditions:
17
*
18
* The above copyright notice and this permission notice shall be
19
* included in all copies or substantial portions of the Software.
20
*
21
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28
* OTHER DEALINGS IN THE SOFTWARE.
29
*------------------------------------------------------------------
30
*/
31
32
#include "safeclib_private.h"
33
#include "safe_str_constraint.h"
34
#include "safe_str_lib.h"
35
36
74
errno_t
75
strcmpfld_s
(
const
char
*dest, rsize_t dmax,
76
const
char
*src,
int
*indicator)
77
{
78
if
(indicator == NULL) {
79
invoke_safe_str_constraint_handler
(
"strcmpfld_s: indicator is null"
,
80
NULL, ESNULLP);
81
return
(ESNULLP);
82
}
83
*indicator = 0;
84
85
if
(dest == NULL) {
86
invoke_safe_str_constraint_handler
(
"strcmpfld_s: dest is null"
,
87
NULL, ESNULLP);
88
return
(ESNULLP);
89
}
90
91
if
(src == NULL) {
92
invoke_safe_str_constraint_handler
(
"strcmpfld_s: src is null"
,
93
NULL, ESNULLP);
94
return
(ESNULLP);
95
}
96
97
if
(dmax == 0) {
98
invoke_safe_str_constraint_handler
(
"strcmpfld_s: dmax is 0"
,
99
NULL, ESZEROL);
100
return
(ESZEROL);
101
}
102
103
if
(dmax > RSIZE_MAX_STR) {
104
invoke_safe_str_constraint_handler
(
"strcmpfld_s: dmax exceeds max"
,
105
NULL, ESLEMAX);
106
return
(ESLEMAX);
107
}
108
109
/* compare for dmax charactrers, not the null! */
110
while
(dmax) {
111
112
if
(*dest != *src) {
113
break
;
114
}
115
116
dest++;
117
src++;
118
dmax--;
119
}
120
121
*indicator = *dest - *src;
122
return
(EOK);
123
}
invoke_safe_str_constraint_handler
void invoke_safe_str_constraint_handler(const char *msg, void *ptr, errno_t error)
Invokes the currently set constraint handler or the default.
Definition:
safe_str_constraint.c:99
strcmpfld_s
errno_t strcmpfld_s(const char *dest, rsize_t dmax, const char *src, int *indicator)
Compares the character array pointed to by src to the character array pointed to by dest for dmax cha...
Definition:
strcmpfld_s.c:75
Generated for Safe C Library 30082017.0-g85d10b 2.1 by
doxygen