1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
1 |
/***************************************************************************
|
2 |
* _ _ ____ _
|
|
3 |
* Project ___| | | | _ \| |
|
|
4 |
* / __| | | | |_) | |
|
|
5 |
* | (__| |_| | _ <| |___
|
|
6 |
* \___|\___/|_| \_\_____|
|
|
7 |
*
|
|
1.2.20
by Alessandro Ghedini
Import upstream version 7.28.1 |
8 |
* Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
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 http://curl.haxx.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 |
***************************************************************************/
|
|
1.3.1
by Alessandro Ghedini
Import upstream version 7.29.0 |
22 |
#include "curl_setup.h" |
1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
23 |
#include "strdup.h" |
78
by Marc Deslauriers
* SECURITY UPDATE: sensitive data disclosure via duphandle read out of |
24 |
#include "curl_memory.h" |
25 |
||
26 |
/* The last #include file should be: */
|
|
27 |
#include "memdebug.h" |
|
1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
28 |
|
29 |
#ifndef HAVE_STRDUP
|
|
30 |
char *curlx_strdup(const char *str) |
|
31 |
{
|
|
1.1.11
by Michael Vogt
Import upstream version 7.18.2 |
32 |
size_t len; |
1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
33 |
char *newstr; |
34 |
||
1.1.10
by Matthias Klose
Import upstream version 7.18.0 |
35 |
if(!str) |
1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
36 |
return (char *)NULL; |
37 |
||
38 |
len = strlen(str); |
|
1.1.11
by Michael Vogt
Import upstream version 7.18.2 |
39 |
|
40 |
if(len >= ((size_t)-1) / sizeof(char)) |
|
41 |
return (char *)NULL; |
|
42 |
||
1.1.12
by Andreas Schuldei
Import upstream version 7.19.4 |
43 |
newstr = malloc((len+1)*sizeof(char)); |
1.1.10
by Matthias Klose
Import upstream version 7.18.0 |
44 |
if(!newstr) |
1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
45 |
return (char *)NULL; |
46 |
||
1.1.8
by Matthias Klose
Import upstream version 7.16.4 |
47 |
memcpy(newstr,str,(len+1)*sizeof(char)); |
1.1.6
by Martin Pitt
Import upstream version 7.15.5 |
48 |
|
49 |
return newstr; |
|
50 |
||
51 |
}
|
|
52 |
#endif
|
|
78
by Marc Deslauriers
* SECURITY UPDATE: sensitive data disclosure via duphandle read out of |
53 |
|
54 |
/***************************************************************************
|
|
55 |
*
|
|
56 |
* Curl_memdup(source, length)
|
|
57 |
*
|
|
58 |
* Copies the 'source' data to a newly allocated buffer (that is
|
|
59 |
* returned). Copies 'length' bytes.
|
|
60 |
*
|
|
61 |
* Returns the new pointer or NULL on failure.
|
|
62 |
*
|
|
63 |
***************************************************************************/
|
|
64 |
char *Curl_memdup(const char *src, size_t length) |
|
65 |
{
|
|
66 |
char *buffer = malloc(length); |
|
67 |
if(!buffer) |
|
68 |
return NULL; /* fail */ |
|
69 |
||
70 |
memcpy(buffer, src, length); |
|
71 |
||
72 |
return buffer; |
|
73 |
}
|