Coverage Report

Created: 2025-07-11 06:33

/src/PROJ/curl/lib/curlx/warnless.c
Line
Count
Source (jump to first uncovered line)
1
/***************************************************************************
2
 *                                  _   _ ____  _
3
 *  Project                     ___| | | |  _ \| |
4
 *                             / __| | | | |_) | |
5
 *                            | (__| |_| |  _ <| |___
6
 *                             \___|\___/|_| \_\_____|
7
 *
8
 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
9
 *
10
 * This software is licensed as described in the file COPYING, which
11
 * you should have received as part of this distribution. The terms
12
 * are also available at https://curl.se/docs/copyright.html.
13
 *
14
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15
 * copies of the Software, and permit persons to whom the Software is
16
 * furnished to do so, under the terms of the COPYING file.
17
 *
18
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19
 * KIND, either express or implied.
20
 *
21
 * SPDX-License-Identifier: curl
22
 *
23
 ***************************************************************************/
24
25
#include "warnless.h"
26
27
#if defined(__INTEL_COMPILER) && defined(__unix__)
28
29
#ifdef HAVE_NETINET_IN_H
30
#  include <netinet/in.h>
31
#endif
32
#ifdef HAVE_ARPA_INET_H
33
#  include <arpa/inet.h>
34
#endif
35
36
#endif /* __INTEL_COMPILER && __unix__ */
37
38
#include <limits.h>
39
40
0
#define CURL_MASK_UCHAR   ((unsigned char)~0)
41
42
0
#define CURL_MASK_USHORT  ((unsigned short)~0)
43
44
0
#define CURL_MASK_UINT    ((unsigned int)~0)
45
0
#define CURL_MASK_SINT    (CURL_MASK_UINT >> 1)
46
47
0
#define CURL_MASK_ULONG   ((unsigned long)~0)
48
49
0
#define CURL_MASK_USIZE_T ((size_t)~0)
50
0
#define CURL_MASK_SSIZE_T (CURL_MASK_USIZE_T >> 1)
51
52
/*
53
** unsigned long to unsigned char
54
*/
55
56
unsigned char curlx_ultouc(unsigned long ulnum)
57
0
{
58
#ifdef __INTEL_COMPILER
59
#  pragma warning(push)
60
#  pragma warning(disable:810) /* conversion may lose significant bits */
61
#endif
62
63
0
  DEBUGASSERT(ulnum <= (unsigned long) CURL_MASK_UCHAR);
64
0
  return (unsigned char)(ulnum & (unsigned long) CURL_MASK_UCHAR);
65
66
#ifdef __INTEL_COMPILER
67
#  pragma warning(pop)
68
#endif
69
0
}
70
71
/*
72
** unsigned size_t to signed int
73
*/
74
75
int curlx_uztosi(size_t uznum)
76
0
{
77
#ifdef __INTEL_COMPILER
78
#  pragma warning(push)
79
#  pragma warning(disable:810) /* conversion may lose significant bits */
80
#endif
81
82
0
  DEBUGASSERT(uznum <= (size_t) CURL_MASK_SINT);
83
0
  return (int)(uznum & (size_t) CURL_MASK_SINT);
84
85
#ifdef __INTEL_COMPILER
86
#  pragma warning(pop)
87
#endif
88
0
}
89
90
/*
91
** unsigned size_t to unsigned long
92
*/
93
94
unsigned long curlx_uztoul(size_t uznum)
95
0
{
96
#ifdef __INTEL_COMPILER
97
#  pragma warning(push)
98
#  pragma warning(disable:810) /* conversion may lose significant bits */
99
#endif
100
101
#if ULONG_MAX < SIZE_T_MAX
102
  DEBUGASSERT(uznum <= (size_t) CURL_MASK_ULONG);
103
#endif
104
0
  return (unsigned long)(uznum & (size_t) CURL_MASK_ULONG);
105
106
#ifdef __INTEL_COMPILER
107
#  pragma warning(pop)
108
#endif
109
0
}
110
111
/*
112
** unsigned size_t to unsigned int
113
*/
114
115
unsigned int curlx_uztoui(size_t uznum)
116
0
{
117
#ifdef __INTEL_COMPILER
118
#  pragma warning(push)
119
#  pragma warning(disable:810) /* conversion may lose significant bits */
120
#endif
121
122
0
#if UINT_MAX < SIZE_T_MAX
123
0
  DEBUGASSERT(uznum <= (size_t) CURL_MASK_UINT);
124
0
#endif
125
0
  return (unsigned int)(uznum & (size_t) CURL_MASK_UINT);
126
127
#ifdef __INTEL_COMPILER
128
#  pragma warning(pop)
129
#endif
130
0
}
131
132
/*
133
** signed long to signed int
134
*/
135
136
int curlx_sltosi(long slnum)
137
0
{
138
#ifdef __INTEL_COMPILER
139
#  pragma warning(push)
140
#  pragma warning(disable:810) /* conversion may lose significant bits */
141
#endif
142
143
0
  DEBUGASSERT(slnum >= 0);
144
0
#if INT_MAX < LONG_MAX
145
0
  DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_SINT);
146
0
#endif
147
0
  return (int)(slnum & (long) CURL_MASK_SINT);
148
149
#ifdef __INTEL_COMPILER
150
#  pragma warning(pop)
151
#endif
152
0
}
153
154
/*
155
** signed long to unsigned int
156
*/
157
158
unsigned int curlx_sltoui(long slnum)
159
0
{
160
#ifdef __INTEL_COMPILER
161
#  pragma warning(push)
162
#  pragma warning(disable:810) /* conversion may lose significant bits */
163
#endif
164
165
0
  DEBUGASSERT(slnum >= 0);
166
0
#if UINT_MAX < LONG_MAX
167
0
  DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_UINT);
168
0
#endif
169
0
  return (unsigned int)(slnum & (long) CURL_MASK_UINT);
170
171
#ifdef __INTEL_COMPILER
172
#  pragma warning(pop)
173
#endif
174
0
}
175
176
/*
177
** signed long to unsigned short
178
*/
179
180
unsigned short curlx_sltous(long slnum)
181
0
{
182
#ifdef __INTEL_COMPILER
183
#  pragma warning(push)
184
#  pragma warning(disable:810) /* conversion may lose significant bits */
185
#endif
186
187
0
  DEBUGASSERT(slnum >= 0);
188
0
  DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_USHORT);
189
0
  return (unsigned short)(slnum & (long) CURL_MASK_USHORT);
190
191
#ifdef __INTEL_COMPILER
192
#  pragma warning(pop)
193
#endif
194
0
}
195
196
/*
197
** unsigned size_t to signed ssize_t
198
*/
199
200
ssize_t curlx_uztosz(size_t uznum)
201
0
{
202
#ifdef __INTEL_COMPILER
203
#  pragma warning(push)
204
#  pragma warning(disable:810) /* conversion may lose significant bits */
205
#endif
206
207
0
  DEBUGASSERT(uznum <= (size_t) CURL_MASK_SSIZE_T);
208
0
  return (ssize_t)(uznum & (size_t) CURL_MASK_SSIZE_T);
209
210
#ifdef __INTEL_COMPILER
211
#  pragma warning(pop)
212
#endif
213
0
}
214
215
/*
216
** signed curl_off_t to unsigned size_t
217
*/
218
219
size_t curlx_sotouz(curl_off_t sonum)
220
0
{
221
#ifdef __INTEL_COMPILER
222
#  pragma warning(push)
223
#  pragma warning(disable:810) /* conversion may lose significant bits */
224
#endif
225
226
0
  DEBUGASSERT(sonum >= 0);
227
0
  return (size_t)(sonum & (curl_off_t) CURL_MASK_USIZE_T);
228
229
#ifdef __INTEL_COMPILER
230
#  pragma warning(pop)
231
#endif
232
0
}
233
234
/*
235
** signed ssize_t to signed int
236
*/
237
238
int curlx_sztosi(ssize_t sznum)
239
0
{
240
#ifdef __INTEL_COMPILER
241
#  pragma warning(push)
242
#  pragma warning(disable:810) /* conversion may lose significant bits */
243
#endif
244
245
0
  DEBUGASSERT(sznum >= 0);
246
0
#if INT_MAX < SSIZE_T_MAX
247
0
  DEBUGASSERT((size_t) sznum <= (size_t) CURL_MASK_SINT);
248
0
#endif
249
0
  return (int)(sznum & (ssize_t) CURL_MASK_SINT);
250
251
#ifdef __INTEL_COMPILER
252
#  pragma warning(pop)
253
#endif
254
0
}
255
256
/*
257
** unsigned int to unsigned short
258
*/
259
260
unsigned short curlx_uitous(unsigned int uinum)
261
0
{
262
#ifdef __INTEL_COMPILER
263
#  pragma warning(push)
264
#  pragma warning(disable:810) /* conversion may lose significant bits */
265
#endif
266
267
0
  DEBUGASSERT(uinum <= (unsigned int) CURL_MASK_USHORT);
268
0
  return (unsigned short) (uinum & (unsigned int) CURL_MASK_USHORT);
269
270
#ifdef __INTEL_COMPILER
271
#  pragma warning(pop)
272
#endif
273
0
}
274
275
/*
276
** signed int to unsigned size_t
277
*/
278
279
size_t curlx_sitouz(int sinum)
280
0
{
281
#ifdef __INTEL_COMPILER
282
#  pragma warning(push)
283
#  pragma warning(disable:810) /* conversion may lose significant bits */
284
#endif
285
286
0
  DEBUGASSERT(sinum >= 0);
287
0
  return (size_t) sinum;
288
289
#ifdef __INTEL_COMPILER
290
#  pragma warning(pop)
291
#endif
292
0
}