~ubuntu-branches/ubuntu/trusty/curl/trusty-updates

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
}