[PATCH:libX11 2/2] Convert malloc(strlen()); strcpy() sets to strdup

Jeremy Huddleston jeremyhu at apple.com
Thu Apr 14 22:21:04 PDT 2011


Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>

On Apr 14, 2011, at 21:38, Alan Coopersmith wrote:

> Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
> ---
> modules/im/ximcp/imInt.c       |    6 +---
> modules/im/ximcp/imRm.c        |   19 ++++----------
> modules/im/ximcp/imTrans.c     |    3 +-
> modules/om/generic/omGeneric.c |   50 ++++++++++++---------------------------
> src/FSWrap.c                   |    3 +-
> src/InitExt.c                  |    3 +-
> src/SetLocale.c                |    3 +-
> src/xcms/PrOfId.c              |   11 +-------
> src/xkb/XKBGAlloc.c            |   13 +++-------
> src/xlibi18n/XDefaultIMIF.c    |    6 +---
> src/xlibi18n/XDefaultOMIF.c    |   25 ++++++-------------
> src/xlibi18n/lcDB.c            |   12 +++------
> src/xlibi18n/lcFile.c          |   14 +++--------
> src/xlibi18n/lcGeneric.c       |   18 ++++---------
> src/xlibi18n/lcPublic.c        |    3 +-
> 15 files changed, 59 insertions(+), 130 deletions(-)
> 
> diff --git a/modules/im/ximcp/imInt.c b/modules/im/ximcp/imInt.c
> index 449a42d..26f4991 100644
> --- a/modules/im/ximcp/imInt.c
> +++ b/modules/im/ximcp/imInt.c
> @@ -214,14 +214,12 @@ _XimOpenIM(
>     im->core.res_name  = NULL;
>     im->core.res_class = NULL;
>     if((res_name != NULL) && (*res_name != '\0')){
> -	if(!(im->core.res_name  = (char *)Xmalloc(strlen(res_name)+1)))
> +	if(!(im->core.res_name  = strdup(res_name)))
> 	    goto Error1;
> -	strcpy(im->core.res_name,res_name);
>     }
>     if((res_class != NULL) && (*res_class != '\0')){
> -	if(!(im->core.res_class = (char *)Xmalloc(strlen(res_class)+1)))
> +	if(!(im->core.res_class = strdup(res_class)))
> 	    goto Error2;
> -	strcpy(im->core.res_class,res_class);
>     }
>     if(!(im->core.im_name = _XimMakeImName(lcd)))
> 	goto Error3;
> diff --git a/modules/im/ximcp/imRm.c b/modules/im/ximcp/imRm.c
> index 3449f91..da1207c 100644
> --- a/modules/im/ximcp/imRm.c
> +++ b/modules/im/ximcp/imRm.c
> @@ -793,19 +793,15 @@ _XimEncodeString(
>     XPointer	 	  top,
>     XPointer	 	  val)
> {
> -    int			  len;
>     char		 *string;
>     char		**out;
> 
>     if(val == (XPointer)NULL) {
> 	return False;
>     }
> -    len = strlen((char *)val);
> -    if(!(string = (char *)Xmalloc(len + 1))) {
> +    if (!(string = strdup((char *)val))) {
> 	return False;
>     }
> -    (void)strcpy(string, (char *)val);
> -    string[len] = '\0';
> 
>     out = (char **)((char *)top + info->offset);
>     if(*out) {
> @@ -1163,21 +1159,18 @@ _XimDecodeString(
>     XPointer	 	 top,
>     XPointer	 	 val)
> {
> -    int			 len = 0;
>     char		*in;
>     char		*string;
> 
>     in = *((char **)((char *)top + info->offset));
> -    if(in != (char *)NULL) {
> -	len = strlen(in);
> +    if (in != NULL) {
> +	string = strdup(in);
> +    } else {
> +	string = Xcalloc(1, 1); /* strdup("") */
>     }
> -    if(!(string = (char *)Xmalloc(len + 1))) {
> +    if (string == NULL) {
> 	return False;
>     }
> -    if(in != (char *)NULL) {
> -	(void)strcpy(string, in);
> -    }
> -    string[len] = '\0';
>     *((char **)val) = string;
>     return True;
> }
> diff --git a/modules/im/ximcp/imTrans.c b/modules/im/ximcp/imTrans.c
> index e321d59..0ac08aa 100644
> --- a/modules/im/ximcp/imTrans.c
> +++ b/modules/im/ximcp/imTrans.c
> @@ -290,7 +290,7 @@ _XimTransConf(
>     char		*paddr;
>     TransSpecRec	*spec;
> 
> -    if (!(paddr = (char *)Xmalloc(strlen(address) + 1)))
> +    if (!(paddr = strdup(address)))
> 	return False;
> 
>     if (!(spec = Xcalloc(1, sizeof(TransSpecRec)))) {
> @@ -298,7 +298,6 @@ _XimTransConf(
> 	return False;
>     }
> 
> -    (void)strcpy(paddr, address);
>     spec->address   = paddr;
> 
>     im->private.proto.spec     = (XPointer)spec;
> diff --git a/modules/om/generic/omGeneric.c b/modules/om/generic/omGeneric.c
> index e358796..7f02c85 100644
> --- a/modules/om/generic/omGeneric.c
> +++ b/modules/om/generic/omGeneric.c
> @@ -523,9 +523,7 @@ get_font_name(
>     if (list == NULL)
> 	return NULL;
> 
> -    name = (char *) Xmalloc(strlen(*list) + 1);
> -    if (name)
> -	strcpy(name, *list);
> +    name = strdup(*list);
> 
>     XFreeFontNames(list);
> 
> @@ -549,10 +547,9 @@ get_rotate_fontname(
>        || len > XLFD_MAX_LEN)
> 	return NULL;
> 
> -    pattern = (char *)Xmalloc(len + 1);
> +    pattern = strdup(font_name);
>     if(!pattern)
> 	return NULL;
> -    strcpy(pattern, font_name);
> 
>     memset(fields, 0, sizeof(char *) * 14);
>     ptr = pattern;
> @@ -661,10 +658,8 @@ get_font_name_from_list(
>     for (i = 0; i < count; i++) {
>         fname = list[i];
>         if(is_match_charset(font_data, fname) == True) {
> -             name = (char *) Xmalloc(strlen(fname) + 1);
> -             if (name)
> -	         strcpy(name, fname);
> -             break;
> +            name = strdup(fname);
> +            break;
>         }
>     }
> 
> @@ -685,11 +680,10 @@ parse_all_name(
>     if(is_match_charset(font_data, pattern) != True)
>  	return False;
> 
> -    font_data->xlfd_name = (char *)Xmalloc(strlen(pattern)+1);
> +    font_data->xlfd_name = strdup(pattern);
>     if(font_data->xlfd_name == NULL)
> 	return (-1);
> 
> -    strcpy(font_data->xlfd_name, pattern);
>     return True;
> #else  /* OLDCODE */
>     Display *dpy = oc->core.om->core.display;
> @@ -723,11 +717,10 @@ parse_all_name(
>         }
>     }
> 
> -    font_data->xlfd_name = (char *)Xmalloc(strlen(pattern)+1);
> +    font_data->xlfd_name = strdup(pattern);
>     if(font_data->xlfd_name == NULL)
> 	return (-1);
> 
> -    strcpy(font_data->xlfd_name, pattern);
>     return True;
> #endif /* OLDCODE */
> }
> @@ -946,12 +939,9 @@ parse_fontdata(
> 		* -- jjw/pma (HP)
> 		*/
> 		if (font_data_return) {
> -		    font_data_return->xlfd_name = (char *)Xmalloc
> -			(strlen(font_data->xlfd_name) + 1);
> +		    font_data_return->xlfd_name = strdup(font_data->xlfd_name);
> 		    if (!font_data_return->xlfd_name) return -1;
> 
> -		    strcpy (font_data_return->xlfd_name, font_data->xlfd_name);
> -
> 		    font_data_return->side      = font_data->side;
> 		}
> #ifdef FONTDEBUG
> @@ -996,11 +986,9 @@ parse_fontdata(
> #ifdef FONTDEBUG
> 		fprintf(stderr,"XLFD name: %s\n",font_data->xlfd_name);
> #endif
> -		font_data_return->xlfd_name = (char *)Xmalloc
> -			(strlen(font_data->xlfd_name) + 1);
> +		font_data_return->xlfd_name = strdup(font_data->xlfd_name);
>                 if (!font_data_return->xlfd_name) return -1;
> 
> -	        strcpy (font_data_return->xlfd_name, font_data->xlfd_name);
> 	        font_data_return->side      = font_data->side;
> 	    }
> 
> @@ -1192,11 +1180,10 @@ parse_fontname(
> 		 * be matched. It returns the required information in
> 		 * font_data_return.
> 		 */
> -		font_set->font_name = (char *)Xmalloc
> -			(strlen(font_data_return.xlfd_name) + 1);
> +		font_set->font_name = strdup(font_data_return.xlfd_name);
> 		if(font_set->font_name == (char *) NULL)
> 		    goto err;
> -		strcpy(font_set->font_name, font_data_return.xlfd_name);
> +
> 		font_set->side = font_data_return.side;
> 
>                 Xfree (font_data_return.xlfd_name);
> @@ -1223,11 +1210,10 @@ parse_fontname(
> 			break;
> 		    }
> 		}
> -		font_set->font_name = (char *)Xmalloc
> -		    	(strlen(font_set->substitute[i].xlfd_name) + 1);
> +		font_set->font_name = strdup(font_set->substitute[i].xlfd_name);
> 		if(font_set->font_name == (char *) NULL)
> 		    goto err;
> -		strcpy(font_set->font_name,font_set->substitute[i].xlfd_name);
> +
> 		font_set->side = font_set->substitute[i].side;
> 		if(parse_vw(oc, font_set, name_list, count) == -1)
> 		    goto err;
> @@ -1237,11 +1223,10 @@ parse_fontname(
> 	}
>     }
> 
> -    base_name = (char *) Xmalloc(strlen(oc->core.base_name_list) + 1);
> +    base_name = strdup(oc->core.base_name_list);
>     if (base_name == NULL)
> 	goto err;
> 
> -    strcpy(base_name, oc->core.base_name_list);
>     oc->core.base_name_list = base_name;
> 
>     XFreeStringList(name_list);
> @@ -1850,16 +1835,14 @@ create_om(
>     om->core.display = dpy;
>     om->core.rdb = rdb;
>     if (res_name) {
> -	om->core.res_name = (char *) Xmalloc(strlen(res_name) + 1);
> +	om->core.res_name = strdup(res_name);
> 	if (om->core.res_name == NULL)
> 	    goto err;
> -	strcpy(om->core.res_name, res_name);
>     }
>     if (res_class) {
> -	om->core.res_class = (char *) Xmalloc(strlen(res_class) + 1);
> +	om->core.res_class = strdup(res_class);
> 	if (om->core.res_class == NULL)
> 	    goto err;
> -	strcpy(om->core.res_class, res_class);
>     }
> 
>     if (om_resources[0].xrm_name == NULLQUARK)
> @@ -2014,10 +1997,9 @@ init_om(
> 
>     _XlcGetResource(lcd, "XLC_FONTSET", "object_name", &value, &count);
>     if (count > 0) {
> -	gen->object_name = (char *) Xmalloc(strlen(*value) + 1);
> +	gen->object_name = strdup(*value);
> 	if (gen->object_name == NULL)
> 	    return False;
> -	strcpy(gen->object_name, *value);
>     }
> 
>     for (num = 0; ; num++) {
> diff --git a/src/FSWrap.c b/src/FSWrap.c
> index 94d94fb..45a2c34 100644
> --- a/src/FSWrap.c
> +++ b/src/FSWrap.c
> @@ -85,10 +85,9 @@ _XParseBaseFontNameList(
>     if (!*str)
> 	return (char **)NULL;
> 
> -    if (!(ptr = Xmalloc((unsigned)strlen(str) + 1))) {
> +    if (!(ptr = strdup(str))) {
> 	return (char **)NULL;
>     }
> -    strcpy(ptr, str);
> 
>     psave = ptr;
>     /* somebody who specifies more than XMAXLIST basefontnames will lose */
> diff --git a/src/InitExt.c b/src/InitExt.c
> index cb9191d..19515cc 100644
> --- a/src/InitExt.c
> +++ b/src/InitExt.c
> @@ -50,14 +50,13 @@ XExtCodes *XInitExtension (
> 
> 	LockDisplay (dpy);
> 	if (! (ext = (_XExtension *) Xcalloc (1, sizeof (_XExtension))) ||
> -	    ! (ext->name = Xmalloc((unsigned) strlen(name) + 1))) {
> +	    ! (ext->name = strdup(name))) {
> 	    if (ext) Xfree((char *) ext);
> 	    UnlockDisplay(dpy);
> 	    return (XExtCodes *) NULL;
> 	}
> 	codes.extension = dpy->ext_number++;
> 	ext->codes = codes;
> -	(void) strcpy(ext->name, name);
> 
> 	/* chain it onto the display list */
> 	ext->next = dpy->ext_procs;
> diff --git a/src/SetLocale.c b/src/SetLocale.c
> index 00c76ee..c49cb2e 100644
> --- a/src/SetLocale.c
> +++ b/src/SetLocale.c
> @@ -103,13 +103,12 @@ _Xsetlocale(
>     if (!methods)
> 	return NULL;
>     name = (*methods->lcname)(state);
> -    xsl_name = Xmalloc(strlen(name) + 1);
> +    xsl_name = strdup(name);
>     if (!xsl_name) {
> 	xsl_name = old_name;
> 	(*methods->destroy)(state);
> 	return NULL;
>     }
> -    strcpy(xsl_name, name);
>     if (old_name)
> 	Xfree(old_name);
>     (*methods->destroy)(state);
> diff --git a/src/xcms/PrOfId.c b/src/xcms/PrOfId.c
> index 831f17a..a96d28c 100644
> --- a/src/xcms/PrOfId.c
> +++ b/src/xcms/PrOfId.c
> @@ -66,7 +66,6 @@ XcmsPrefixOfFormat(
>  */
> {
>     XcmsColorSpace	**papColorSpaces;
> -    char *prefix;
> 
>     /*
>      * First try Device-Independent color spaces
> @@ -75,10 +74,7 @@ XcmsPrefixOfFormat(
>     if (papColorSpaces != NULL) {
> 	while (*papColorSpaces != NULL) {
> 	    if ((*papColorSpaces)->id == id) {
> -		prefix = (char *)Xmalloc((strlen((*papColorSpaces)->prefix) +
> -		1) * sizeof(char));
> -		strcpy(prefix, (*papColorSpaces)->prefix);
> -		return(prefix);
> +		return strdup((*papColorSpaces)->prefix);
> 	    }
> 	    papColorSpaces++;
> 	}
> @@ -91,10 +87,7 @@ XcmsPrefixOfFormat(
>     if (papColorSpaces != NULL) {
> 	while (*papColorSpaces != NULL) {
> 	    if ((*papColorSpaces)->id == id) {
> -		prefix = (char *)Xmalloc((strlen((*papColorSpaces)->prefix) +
> -		1) * sizeof(char));
> -		strcpy(prefix, (*papColorSpaces)->prefix);
> -		return(prefix);
> +		return strdup((*papColorSpaces)->prefix);
> 	    }
> 	    papColorSpaces++;
> 	}
> diff --git a/src/xkb/XKBGAlloc.c b/src/xkb/XKBGAlloc.c
> index 90ec2f9..7679496 100644
> --- a/src/xkb/XKBGAlloc.c
> +++ b/src/xkb/XKBGAlloc.c
> @@ -684,9 +684,7 @@ register XkbPropertyPtr prop;
> 	if ((prop->name)&&(strcmp(name,prop->name)==0)) {
> 	    if (prop->value)
> 		_XkbFree(prop->value);
> -	    prop->value= (char *)_XkbAlloc(strlen(value)+1);
> -	    if (prop->value)
> -		strcpy(prop->value,value);
> +	    prop->value= strdup(value);
> 	    return prop;
> 	}
>     }
> @@ -695,17 +693,15 @@ register XkbPropertyPtr prop;
> 	return NULL;
>     }
>     prop= &geom->properties[geom->num_properties];
> -    prop->name= (char *)_XkbAlloc(strlen(name)+1);
> +    prop->name= strdup(name);
>     if (!prop->name)
> 	return NULL;
> -    strcpy(prop->name,name);
> -    prop->value= (char *)_XkbAlloc(strlen(value)+1);
> +    prop->value= strdup(value);
>     if (!prop->value) {
> 	_XkbFree(prop->name);
> 	prop->name= NULL;
> 	return NULL;
>     }
> -    strcpy(prop->value,value);
>     geom->num_properties++;
>     return prop;
> }
> @@ -757,10 +753,9 @@ register XkbColorPtr color;
>     }
>     color= &geom->colors[geom->num_colors];
>     color->pixel= pixel;
> -    color->spec= (char *)_XkbAlloc(strlen(spec)+1);
> +    color->spec= strdup(spec);
>     if (!color->spec)
> 	return NULL;
> -    strcpy(color->spec,spec);
>     geom->num_colors++;
>     return color;
> }
> diff --git a/src/xlibi18n/XDefaultIMIF.c b/src/xlibi18n/XDefaultIMIF.c
> index ca6ee29..e97d2f4 100644
> --- a/src/xlibi18n/XDefaultIMIF.c
> +++ b/src/xlibi18n/XDefaultIMIF.c
> @@ -226,12 +226,10 @@ _XDefaultOpenIM(
>     local_impart->ctow_conv = ctow_conv;
> 
>     if ((res_name != NULL) && (*res_name != '\0')){
> -	im->core.res_name  = (char *)Xmalloc(strlen(res_name)+1);
> -	strcpy(im->core.res_name,res_name);
> +	im->core.res_name  = strdup(res_name);
>     }
>     if ((res_class != NULL) && (*res_class != '\0')){
> -	im->core.res_class = (char *)Xmalloc(strlen(res_class)+1);
> -	strcpy(im->core.res_class,res_class);
> +	im->core.res_class = strdup(res_class);
>     }
> 
>     return (XIM)im;
> diff --git a/src/xlibi18n/XDefaultOMIF.c b/src/xlibi18n/XDefaultOMIF.c
> index 85d63e8..b1dc66d 100644
> --- a/src/xlibi18n/XDefaultOMIF.c
> +++ b/src/xlibi18n/XDefaultOMIF.c
> @@ -216,9 +216,8 @@ check_fontname(
> 		fname = prop_fname;
> 	}
> 	if (data) {
> -	    font_set->font_name = (char *) Xmalloc(strlen(fname) + 1);
> +	    font_set->font_name = strdup(fname);
> 	    if (font_set->font_name) {
> -		strcpy(font_set->font_name, fname);
> 		found_num++;
> 	    }
> 	}
> @@ -387,9 +386,7 @@ get_font_name(
> 
>     list = XListFonts(dpy, pattern, 1, &count);
>     if (list != NULL) {
> -	name = (char *) Xmalloc(strlen(*list) + 1);
> -	if (name)
> -	    strcpy(name, *list);
> +	name = strdup(*list);
> 
> 	XFreeFontNames(list);
>     } else {
> @@ -459,13 +456,11 @@ parse_fontname(
> 	    if (font_data == NULL)
> 		continue;
> 
> -	    font_set->font_name = (char *) Xmalloc(strlen(font_name) + 1);
> +	    font_set->font_name = strdup(font_name);
> +	    Xfree(font_name);
> 	    if (font_set->font_name == NULL) {
> -		Xfree(font_name);
> 		goto err;
> 	    }
> -	    strcpy(font_set->font_name, font_name);
> -	    Xfree(font_name);
> 	    found_num++;
> 	    goto found;
> 	}
> @@ -548,11 +543,10 @@ Limit the length of the string copy to prevent stack corruption.
> 	}
>     }
>   found:
> -    base_name = (char *) Xmalloc(strlen(oc->core.base_name_list) + 1);
> +    base_name = strdup(oc->core.base_name_list);
>     if (base_name == NULL)
> 	goto err;
> 
> -    strcpy(base_name, oc->core.base_name_list);
>     oc->core.base_name_list = base_name;
> 
>     XFreeStringList(name_list);
> @@ -1177,10 +1171,9 @@ This one is fine.  *value points to one of the local strings in
> supported_charset_list[].
> */
> 	strcpy(buf, *value++);
> -	font_data->name = (char *) Xmalloc(strlen(buf) + 1);
> +	font_data->name = strdup(buf);
> 	if (font_data->name == NULL)
> 	    return False;
> -	strcpy(font_data->name, buf);
>     }
> 
>     length += strlen(data->font_data->name) + 1;
> @@ -1241,16 +1234,14 @@ _XDefaultOpenOM(XLCd lcd, Display *dpy, XrmDatabase rdb,
>     om->core.display = dpy;
>     om->core.rdb = rdb;
>     if (res_name) {
> -	om->core.res_name = (char *)Xmalloc(strlen(res_name) + 1);
> +	om->core.res_name = strdup(res_name);
> 	if (om->core.res_name == NULL)
> 	    goto err;
> -	strcpy(om->core.res_name, res_name);
>     }
>     if (res_class) {
> -	om->core.res_class = (char *)Xmalloc(strlen(res_class) + 1);
> +	om->core.res_class = strdup(res_class);
> 	if (om->core.res_class == NULL)
> 	    goto err;
> -	strcpy(om->core.res_class, res_class);
>     }
> 
>     if (om_resources[0].xrm_name == NULLQUARK)
> diff --git a/src/xlibi18n/lcDB.c b/src/xlibi18n/lcDB.c
> index c6eb7f0..97b22ac 100644
> --- a/src/xlibi18n/lcDB.c
> +++ b/src/xlibi18n/lcDB.c
> @@ -596,20 +596,18 @@ store_to_database(
> 	goto err;
>     }
> 
> -    new->category = (char *)Xmalloc(strlen(parse_info.category) + 1);
> +    new->category = strdup(parse_info.category);
>     if (new->category == NULL) {
> 	goto err;
>     }
> -    strcpy(new->category, parse_info.category);
> 
>     if (! construct_name(name, sizeof(name))) {
> 	goto err;
>     }
> -    new->name = (char *)Xmalloc(strlen(name) + 1);
> +    new->name = strdup(name);
>     if (new->name == NULL) {
> 	goto err;
>     }
> -    strcpy(new->name, name);
>     new->next = *db;
>     new->value = parse_info.value;
>     new->value_num = parse_info.value_num;
> @@ -943,10 +941,9 @@ f_default(
>     case S_NULL:
> 	if (parse_info.category != NULL)
> 	    goto err;
> -	p = (char *)Xmalloc(strlen(wordp) + 1);
> +	p = strdup(wordp);
> 	if (p == NULL)
> 	    goto err;
> -	strcpy(p, wordp);
> 	parse_info.category = p;
> 	parse_info.pre_state = S_CATEGORY;
> 	break;
> @@ -960,10 +957,9 @@ f_default(
> 		break;
> 	    }
> 	}
> -	p = (char *)Xmalloc(strlen(wordp) + 1);
> +	p = strdup(wordp);
> 	if (p == NULL)
> 	    goto err;
> -	strcpy(p, wordp);
> 	if (parse_info.name[parse_info.nest_depth] != NULL) {
> 	    Xfree(parse_info.name[parse_info.nest_depth]);
> 	}
> diff --git a/src/xlibi18n/lcFile.c b/src/xlibi18n/lcFile.c
> index 18756c1..4e44397 100644
> --- a/src/xlibi18n/lcFile.c
> +++ b/src/xlibi18n/lcFile.c
> @@ -423,10 +423,7 @@ resolve_name(
> 	    from = args[1], to = args[0];	/* right to left */
> 	}
> 	if (! strcmp(from, lc_name)) {
> -	    name = Xmalloc(strlen(to) + 1);
> -	    if (name != NULL) {
> -		strcpy(name, to);
> -	    }
> +	    name = strdup(to);
> 	    break;
> 	}
>     }
> @@ -579,8 +576,7 @@ _XlcResolveLocaleName(
> 
>     if (name == NULL) {
> 	/* vendor locale name == Xlocale name, no expansion of alias */
> -	pub->siname = Xmalloc (strlen (lc_name) + 1);
> -	strcpy (pub->siname, lc_name);
> +	pub->siname = strdup (lc_name);
>     } else {
> 	pub->siname = name;
>     }
> @@ -729,8 +725,7 @@ _XlcLocaleDirName(char *dir_name, size_t dir_len, char *lc_name)
>     last_dir_len = strlen (dir_name) + 1;
>     last_dir_name = Xmalloc (last_dir_len);
>     strcpy (last_dir_name, dir_name);
> -    last_lc_name = Xmalloc (strlen (lc_name) + 1);
> -    strcpy (last_lc_name, lc_name);
> +    last_lc_name = strdup (lc_name);
> 
>     return dir_name;
> }
> @@ -828,8 +823,7 @@ _XlcLocaleLibDirName(char *dir_name, size_t dir_len, char *lc_name)
>     last_dir_len = strlen (dir_name) + 1;
>     last_dir_name = Xmalloc (last_dir_len);
>     strcpy (last_dir_name, dir_name);
> -    last_lc_name = Xmalloc (strlen (lc_name) + 1);
> -    strcpy (last_lc_name, lc_name);
> +    last_lc_name = strdup (lc_name);
> 
>     return dir_name;
> }
> diff --git a/src/xlibi18n/lcGeneric.c b/src/xlibi18n/lcGeneric.c
> index df392e9..619cb47 100644
> --- a/src/xlibi18n/lcGeneric.c
> +++ b/src/xlibi18n/lcGeneric.c
> @@ -215,10 +215,9 @@ add_parse_list(
>     unsigned char ch;
>     int num;
> 
> -    str = (char *) Xmalloc(strlen(encoding) + 1);
> +    str = strdup(encoding);
>     if (str == NULL)
>         return False;
> -    strcpy(str, encoding);
> 
>     new = Xcalloc(1, sizeof(ParseInfoRec));
>     if (new == NULL)
> @@ -463,10 +462,9 @@ read_charset_define(
>                 break;
>         }
>         if (new) {
> -            tmp = (char *)Xmalloc(strlen(cset_name)+1);
> +            tmp = strdup(cset_name);
>             if (tmp == NULL)
>                 return;
> -            strcpy(tmp,cset_name);
>             charsetd->name = tmp;
>         }
>         /* side   */
> @@ -522,8 +520,7 @@ read_charset_define(
>                 Xfree(charsetd->encoding_name);
>             }
> */
> -            tmp = (char *)Xmalloc(strlen(value[0])+1);
> -            strcpy(tmp,value[0]);
> +            tmp = strdup(value[0]);
>             charsetd->encoding_name = tmp;
>             charsetd->xrm_encoding_name = XrmStringToQuark(tmp);
>         }
> @@ -593,10 +590,9 @@ read_segmentconversion(
>         if (num > 0) {
>             char *tmp;
>             _XlcDbg_printValue(name,value,num);
> -            tmp = (char *)Xmalloc(strlen(value[0])+1);
> +            tmp = strdup(value[0]);
>             if (tmp == NULL)
>                 return;
> -            strcpy(tmp,value[0]);
>             conversion->source_encoding = tmp;
>             conversion->source = srch_charset_define(tmp,&new);
>         }
> @@ -606,10 +602,9 @@ read_segmentconversion(
>         if (num > 0) {
>             char *tmp;
>             _XlcDbg_printValue(name,value,num);
> -            tmp = (char *)Xmalloc(strlen(value[0])+1);
> +            tmp = strdup(value[0]);
>             if (tmp == NULL)
>                 return;
> -            strcpy(tmp,value[0]);
>             conversion->destination_encoding = tmp;
>             conversion->dest = srch_charset_define(tmp,&new);
>         }
> @@ -645,12 +640,11 @@ create_ctextseg(
>     ret = (ExtdSegment)Xmalloc(sizeof(ExtdSegmentRec));
>     if (ret == NULL)
>         return NULL;
> -    ret->name = (char *)Xmalloc(strlen(value[0]) + 1);
> +    ret->name = strdup(value[0]);
>     if (ret->name == NULL) {
>         Xfree (ret);
>         return NULL;
>     }
> -    strcpy(ret->name,value[0]);
>     cset_name = (char*) Xmalloc (strlen(ret->name) + 1);
>     if (cset_name == NULL) {
>         Xfree (ret->name);
> diff --git a/src/xlibi18n/lcPublic.c b/src/xlibi18n/lcPublic.c
> index 43b9286..1b1fb54 100644
> --- a/src/xlibi18n/lcPublic.c
> +++ b/src/xlibi18n/lcPublic.c
> @@ -128,10 +128,9 @@ load_public(
> 
>     _XlcGetResource(lcd, "XLC_XLOCALE", "encoding_name", &values, &num);
>     str = (num > 0) ? values[0] : "STRING";
> -    pub->encoding_name = (char*) Xmalloc(strlen(str) + 1);
> +    pub->encoding_name = strdup(str);
>     if (pub->encoding_name == NULL)
> 	return False;
> -    strcpy(pub->encoding_name, str);
> 
>     return True;
> }
> -- 
> 1.7.3.2
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 



More information about the xorg-devel mailing list