~ubuntu-branches/ubuntu/wily/curl/wily-proposed

« back to all changes in this revision

Viewing changes to src/tool_strdup.c

  • Committer: Package Import Robot
  • Author(s): Alessandro Ghedini
  • Date: 2014-11-06 11:40:24 UTC
  • mto: This revision was merged to the branch mainline in revision 84.
  • Revision ID: package-import@ubuntu.com-20141106114024-aapp84u7vnrjqx84
Tags: 7.38.0-3
* Enable all hardening options (Closes: #763372)
* Fix duphandle read out of bounds as per CVE-2014-3707
  http://curl.haxx.se/docs/adv_20141105.html
* Set urgency=high accordingly

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
 *                                  _   _ ____  _
 
3
 *  Project                     ___| | | |  _ \| |
 
4
 *                             / __| | | | |_) | |
 
5
 *                            | (__| |_| |  _ <| |___
 
6
 *                             \___|\___/|_| \_\_____|
 
7
 *
 
8
 * Copyright (C) 1998 - 2014, 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 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
 ***************************************************************************/
 
22
#include "strdup.h"
 
23
 
 
24
#ifndef HAVE_STRDUP
 
25
char *strdup(const char *str)
 
26
{
 
27
  size_t len;
 
28
  char *newstr;
 
29
 
 
30
  if(!str)
 
31
    return (char *)NULL;
 
32
 
 
33
  len = strlen(str);
 
34
 
 
35
  if(len >= ((size_t)-1) / sizeof(char))
 
36
    return (char *)NULL;
 
37
 
 
38
  newstr = malloc((len+1)*sizeof(char));
 
39
  if(!newstr)
 
40
    return (char *)NULL;
 
41
 
 
42
  memcpy(newstr,str,(len+1)*sizeof(char));
 
43
 
 
44
  return newstr;
 
45
 
 
46
}
 
47
#endif