Commit bdfb5219 authored by Alan Coopersmith's avatar Alan Coopersmith Committed by Ulrich Sibiller

Replace _XkbDupString with Xstrdup

The two functions have identical semantics, including safely returning NULL when NULL is passed in (which POSIX strdup does not guarantee). Some callers could probably be adjusted to call libc strdup directly, when we know the input is non-NULL. Signed-off-by: 's avatarAlan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net> Reviewed-by: 's avatarDaniel Stone <daniel@fooishbar.org> Backported-to-NX-by: 's avatarUlrich Sibiller <uli42@gmx.de>
parent e61e9795
...@@ -985,10 +985,6 @@ extern XkbGeometryPtr XkbLookupNamedGeometry( ...@@ -985,10 +985,6 @@ extern XkbGeometryPtr XkbLookupNamedGeometry(
Bool * /* shouldFree */ Bool * /* shouldFree */
); );
extern char * _XkbDupString(
char * /* str */
);
extern void XkbConvertCase( extern void XkbConvertCase(
KeySym /* sym */, KeySym /* sym */,
KeySym * /* lower */, KeySym * /* lower */,
......
...@@ -187,7 +187,7 @@ XkbConfigRtrnPtr rtrn; ...@@ -187,7 +187,7 @@ XkbConfigRtrnPtr rtrn;
} }
if (rtrn->symbols!=NULL) { if (rtrn->symbols!=NULL) {
if (rtrn->phys_symbols==NULL) if (rtrn->phys_symbols==NULL)
rtrn->phys_symbols= _XkbDupString(names->symbols); rtrn->phys_symbols= Xstrdup(names->symbols);
if (names->symbols) _XkbFree(names->symbols); if (names->symbols) _XkbFree(names->symbols);
names->symbols= rtrn->symbols; names->symbols= rtrn->symbols;
rtrn->symbols= NULL; rtrn->symbols= NULL;
......
...@@ -542,8 +542,8 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile; ...@@ -542,8 +542,8 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
} }
} }
if ((outFile= strrchr(file,'/'))!=NULL) if ((outFile= strrchr(file,'/'))!=NULL)
outFile= _XkbDupString(&outFile[1]); outFile= Xstrdup(&outFile[1]);
else outFile= _XkbDupString(file); else outFile= Xstrdup(file);
XkbEnsureSafeMapName(outFile); XkbEnsureSafeMapName(outFile);
OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir)); OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
......
...@@ -426,8 +426,8 @@ Bool append = False; ...@@ -426,8 +426,8 @@ Bool append = False;
} }
if (*words == '\0') if (*words == '\0')
return False; return False;
group->name = _XkbDupString(gname); group->name = Xstrdup(gname);
group->words = _XkbDupString(words); group->words = Xstrdup(words);
for (i = 1, words = group->words; *words; words++) { for (i = 1, words = group->words; *words; words++) {
if ( *words == ' ') { if ( *words == ' ') {
*words++ = '\0'; *words++ = '\0';
...@@ -478,17 +478,17 @@ Bool append = False; ...@@ -478,17 +478,17 @@ Bool append = False;
rule->flags|= XkbRF_Append; rule->flags|= XkbRF_Append;
else else
rule->flags|= XkbRF_Normal; rule->flags|= XkbRF_Normal;
rule->model= _XkbDupString(tmp.name[MODEL]); rule->model= Xstrdup(tmp.name[MODEL]);
rule->layout= _XkbDupString(tmp.name[LAYOUT]); rule->layout= Xstrdup(tmp.name[LAYOUT]);
rule->variant= _XkbDupString(tmp.name[VARIANT]); rule->variant= Xstrdup(tmp.name[VARIANT]);
rule->option= _XkbDupString(tmp.name[OPTION]); rule->option= Xstrdup(tmp.name[OPTION]);
rule->keycodes= _XkbDupString(tmp.name[KEYCODES]); rule->keycodes= Xstrdup(tmp.name[KEYCODES]);
rule->symbols= _XkbDupString(tmp.name[SYMBOLS]); rule->symbols= Xstrdup(tmp.name[SYMBOLS]);
rule->types= _XkbDupString(tmp.name[TYPES]); rule->types= Xstrdup(tmp.name[TYPES]);
rule->compat= _XkbDupString(tmp.name[COMPAT]); rule->compat= Xstrdup(tmp.name[COMPAT]);
rule->geometry= _XkbDupString(tmp.name[GEOMETRY]); rule->geometry= Xstrdup(tmp.name[GEOMETRY]);
rule->keymap= _XkbDupString(tmp.name[KEYMAP]); rule->keymap= Xstrdup(tmp.name[KEYMAP]);
rule->layout_num = rule->variant_num = 0; rule->layout_num = rule->variant_num = 0;
for (i = 0; i < nread; i++) { for (i = 0; i < nread; i++) {
...@@ -533,7 +533,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs) ...@@ -533,7 +533,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
bzero((char *)mdefs,sizeof(XkbRF_MultiDefsRec)); bzero((char *)mdefs,sizeof(XkbRF_MultiDefsRec));
mdefs->model = defs->model; mdefs->model = defs->model;
mdefs->options = _XkbDupString(defs->options); mdefs->options = Xstrdup(defs->options);
if (mdefs->options) squeeze_spaces(mdefs->options); if (mdefs->options) squeeze_spaces(mdefs->options);
if (defs->layout) { if (defs->layout) {
...@@ -542,7 +542,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs) ...@@ -542,7 +542,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
} else { } else {
char *p; char *p;
int i; int i;
mdefs->layout[1] = _XkbDupString(defs->layout); mdefs->layout[1] = Xstrdup(defs->layout);
if (mdefs->layout[1] == NULL) if (mdefs->layout[1] == NULL)
return False; return False;
squeeze_spaces(mdefs->layout[1]); squeeze_spaces(mdefs->layout[1]);
...@@ -566,7 +566,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs) ...@@ -566,7 +566,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr defs)
} else { } else {
char *p; char *p;
int i; int i;
mdefs->variant[1] = _XkbDupString(defs->variant); mdefs->variant[1] = Xstrdup(defs->variant);
if (mdefs->variant[1] == NULL) if (mdefs->variant[1] == NULL)
return False; return False;
squeeze_spaces(mdefs->variant[1]); squeeze_spaces(mdefs->variant[1]);
...@@ -602,7 +602,7 @@ Apply(char *src, char **dst) ...@@ -602,7 +602,7 @@ Apply(char *src, char **dst)
*dst= _Concat(*dst, src); *dst= _Concat(*dst, src);
} else { } else {
if (*dst == NULL) if (*dst == NULL)
*dst= _XkbDupString(src); *dst= Xstrdup(src);
} }
} }
} }
...@@ -1045,8 +1045,8 @@ XkbRF_AddVarDescCopy(XkbRF_DescribeVarsPtr vars,XkbRF_VarDescPtr from) ...@@ -1045,8 +1045,8 @@ XkbRF_AddVarDescCopy(XkbRF_DescribeVarsPtr vars,XkbRF_VarDescPtr from)
XkbRF_VarDescPtr nd; XkbRF_VarDescPtr nd;
if ((nd=XkbRF_AddVarDesc(vars))!=NULL) { if ((nd=XkbRF_AddVarDesc(vars))!=NULL) {
nd->name= _XkbDupString(from->name); nd->name= Xstrdup(from->name);
nd->desc= _XkbDupString(from->desc); nd->desc= Xstrdup(from->desc);
} }
return nd; return nd;
} }
...@@ -1074,7 +1074,7 @@ XkbRF_AddVarToDescribe(XkbRF_RulesPtr rules,char *name) ...@@ -1074,7 +1074,7 @@ XkbRF_AddVarToDescribe(XkbRF_RulesPtr rules,char *name)
rules->extra= NULL; rules->extra= NULL;
return NULL; return NULL;
} }
rules->extra_names[rules->num_extra]= _XkbDupString(name); rules->extra_names[rules->num_extra]= Xstrdup(name);
bzero(&rules->extra[rules->num_extra],sizeof(XkbRF_DescribeVarsRec)); bzero(&rules->extra[rules->num_extra],sizeof(XkbRF_DescribeVarsRec));
return &rules->extra[rules->num_extra++]; return &rules->extra[rules->num_extra++];
} }
......
...@@ -5164,17 +5164,17 @@ ProcXkbGetKbdByName(ClientPtr client) ...@@ -5164,17 +5164,17 @@ ProcXkbGetKbdByName(ClientPtr client)
if (!names.keymap) { if (!names.keymap) {
if ((!names.compat)&& if ((!names.compat)&&
(fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) { (fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) {
names.compat= _XkbDupString("%"); names.compat= Xstrdup("%");
} }
if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) { if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) {
names.types= _XkbDupString("%"); names.types= Xstrdup("%");
} }
if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) { if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) {
names.symbols= _XkbDupString("%"); names.symbols= Xstrdup("%");
} }
geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0)); geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0));
if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) { if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) {
names.geometry= _XkbDupString("%"); names.geometry= Xstrdup("%");
geom_changed= False; geom_changed= False;
} }
} }
......
...@@ -229,16 +229,16 @@ XkbSetRulesUsed(XkbRF_VarDefsPtr defs) ...@@ -229,16 +229,16 @@ XkbSetRulesUsed(XkbRF_VarDefsPtr defs)
{ {
if (XkbModelUsed) if (XkbModelUsed)
_XkbFree(XkbModelUsed); _XkbFree(XkbModelUsed);
XkbModelUsed= (defs->model?_XkbDupString(defs->model):NULL); XkbModelUsed= (defs->model?Xstrdup(defs->model):NULL);
if (XkbLayoutUsed) if (XkbLayoutUsed)
_XkbFree(XkbLayoutUsed); _XkbFree(XkbLayoutUsed);
XkbLayoutUsed= (defs->layout?_XkbDupString(defs->layout):NULL); XkbLayoutUsed= (defs->layout?Xstrdup(defs->layout):NULL);
if (XkbVariantUsed) if (XkbVariantUsed)
_XkbFree(XkbVariantUsed); _XkbFree(XkbVariantUsed);
XkbVariantUsed= (defs->variant?_XkbDupString(defs->variant):NULL); XkbVariantUsed= (defs->variant?Xstrdup(defs->variant):NULL);
if (XkbOptionsUsed) if (XkbOptionsUsed)
_XkbFree(XkbOptionsUsed); _XkbFree(XkbOptionsUsed);
XkbOptionsUsed= (defs->options?_XkbDupString(defs->options):NULL); XkbOptionsUsed= (defs->options?Xstrdup(defs->options):NULL);
if (XkbWantRulesProp) if (XkbWantRulesProp)
QueueWorkProc(XkbWriteRulesProp,NULL,NULL); QueueWorkProc(XkbWriteRulesProp,NULL,NULL);
return; return;
...@@ -250,27 +250,27 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout, ...@@ -250,27 +250,27 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout,
{ {
if (XkbRulesFile) if (XkbRulesFile)
_XkbFree(XkbRulesFile); _XkbFree(XkbRulesFile);
XkbRulesFile= _XkbDupString(rulesFile); XkbRulesFile= Xstrdup(rulesFile);
rulesDefined= True; rulesDefined= True;
if (model) { if (model) {
if (XkbModelDflt) if (XkbModelDflt)
_XkbFree(XkbModelDflt); _XkbFree(XkbModelDflt);
XkbModelDflt= _XkbDupString(model); XkbModelDflt= Xstrdup(model);
} }
if (layout) { if (layout) {
if (XkbLayoutDflt) if (XkbLayoutDflt)
_XkbFree(XkbLayoutDflt); _XkbFree(XkbLayoutDflt);
XkbLayoutDflt= _XkbDupString(layout); XkbLayoutDflt= Xstrdup(layout);
} }
if (variant) { if (variant) {
if (XkbVariantDflt) if (XkbVariantDflt)
_XkbFree(XkbVariantDflt); _XkbFree(XkbVariantDflt);
XkbVariantDflt= _XkbDupString(variant); XkbVariantDflt= Xstrdup(variant);
} }
if (options) { if (options) {
if (XkbOptionsDflt) if (XkbOptionsDflt)
_XkbFree(XkbOptionsDflt); _XkbFree(XkbOptionsDflt);
XkbOptionsDflt= _XkbDupString(options); XkbOptionsDflt= Xstrdup(options);
} }
return; return;
} }
...@@ -637,12 +637,12 @@ XkbRF_VarDefsRec defs; ...@@ -637,12 +637,12 @@ XkbRF_VarDefsRec defs;
* generation. Eventually they will be freed at the end of this * generation. Eventually they will be freed at the end of this
* function. * function.
*/ */
if (names->keymap) names->keymap = _XkbDupString(names->keymap); if (names->keymap) names->keymap = Xstrdup(names->keymap);
if (names->keycodes) names->keycodes = _XkbDupString(names->keycodes); if (names->keycodes) names->keycodes = Xstrdup(names->keycodes);
if (names->types) names->types = _XkbDupString(names->types); if (names->types) names->types = Xstrdup(names->types);
if (names->compat) names->compat = _XkbDupString(names->compat); if (names->compat) names->compat = Xstrdup(names->compat);
if (names->geometry) names->geometry = _XkbDupString(names->geometry); if (names->geometry) names->geometry = Xstrdup(names->geometry);
if (names->symbols) names->symbols = _XkbDupString(names->symbols); if (names->symbols) names->symbols = Xstrdup(names->symbols);
if (defs.model && defs.layout && rules) { if (defs.model && defs.layout && rules) {
XkbComponentNamesRec rNames; XkbComponentNamesRec rNames;
......
...@@ -363,7 +363,7 @@ XkbCFAddModByName( XkbConfigRtrnPtr rtrn, ...@@ -363,7 +363,7 @@ XkbCFAddModByName( XkbConfigRtrnPtr rtrn,
last->merge= merge; last->merge= merge;
last->name= NULL; last->name= NULL;
} }
last->name= _XkbDupString(name); last->name= Xstrdup(name);
} }
return last; return last;
} }
...@@ -487,7 +487,7 @@ unsigned what; ...@@ -487,7 +487,7 @@ unsigned what;
} }
if (*str!=NULL) if (*str!=NULL)
_XkbFree(*str); _XkbFree(*str);
*str= _XkbDupString(val.str); *str= Xstrdup(val.str);
break; break;
case _XkbCF_InitialMods: case _XkbCF_InitialMods:
case _XkbCF_IgnoreLockMods: case _XkbCF_IgnoreLockMods:
...@@ -1046,7 +1046,7 @@ DefaultFinish( XkbConfigFieldsPtr fields, ...@@ -1046,7 +1046,7 @@ DefaultFinish( XkbConfigFieldsPtr fields,
return DefaultCleanUp(rtrn); return DefaultCleanUp(rtrn);
if (what==XkbCF_Check) { if (what==XkbCF_Check) {
if ((rtrn->symbols==NULL)&&(rtrn->phys_symbols!=NULL)) if ((rtrn->symbols==NULL)&&(rtrn->phys_symbols!=NULL))
rtrn->symbols= _XkbDupString(rtrn->phys_symbols); rtrn->symbols= Xstrdup(rtrn->phys_symbols);
} }
if ((what==XkbCF_Apply)||(what==XkbCF_Check)) { if ((what==XkbCF_Apply)||(what==XkbCF_Check)) {
if (xkb && xkb->names && (rtrn->num_unbound_mods>0)) if (xkb && xkb->names && (rtrn->num_unbound_mods>0))
......
...@@ -334,7 +334,7 @@ XkbFileInfo finfo; ...@@ -334,7 +334,7 @@ XkbFileInfo finfo;
if (wantNames&XkmTypesMask) { if (wantNames&XkmTypesMask) {
if (old_names->types!=None) { if (old_names->types!=None) {
tmp= XkbAtomGetString(dpy,old_names->types); tmp= XkbAtomGetString(dpy,old_names->types);
names->types= _XkbDupString(tmp); names->types= Xstrdup(tmp);
} }
else { else {
wantDflts|= XkmTypesMask; wantDflts|= XkmTypesMask;
...@@ -344,7 +344,7 @@ XkbFileInfo finfo; ...@@ -344,7 +344,7 @@ XkbFileInfo finfo;
if (wantNames&XkmCompatMapMask) { if (wantNames&XkmCompatMapMask) {
if (old_names->compat!=None) { if (old_names->compat!=None) {
tmp= XkbAtomGetString(dpy,old_names->compat); tmp= XkbAtomGetString(dpy,old_names->compat);
names->compat= _XkbDupString(tmp); names->compat= Xstrdup(tmp);
} }
else wantDflts|= XkmCompatMapMask; else wantDflts|= XkmCompatMapMask;
complete|= XkmCompatMapMask; complete|= XkmCompatMapMask;
...@@ -353,13 +353,13 @@ XkbFileInfo finfo; ...@@ -353,13 +353,13 @@ XkbFileInfo finfo;
if (old_names->symbols==None) if (old_names->symbols==None)
return False; return False;
tmp= XkbAtomGetString(dpy,old_names->symbols); tmp= XkbAtomGetString(dpy,old_names->symbols);
names->symbols= _XkbDupString(tmp); names->symbols= Xstrdup(tmp);
complete|= XkmSymbolsMask; complete|= XkmSymbolsMask;
} }
if (wantNames&XkmKeyNamesMask) { if (wantNames&XkmKeyNamesMask) {
if (old_names->keycodes!=None) { if (old_names->keycodes!=None) {
tmp= XkbAtomGetString(dpy,old_names->keycodes); tmp= XkbAtomGetString(dpy,old_names->keycodes);
names->keycodes= _XkbDupString(tmp); names->keycodes= Xstrdup(tmp);
} }
else wantDflts|= XkmKeyNamesMask; else wantDflts|= XkmKeyNamesMask;
complete|= XkmKeyNamesMask; complete|= XkmKeyNamesMask;
...@@ -368,7 +368,7 @@ XkbFileInfo finfo; ...@@ -368,7 +368,7 @@ XkbFileInfo finfo;
if (old_names->geometry==None) if (old_names->geometry==None)
return False; return False;
tmp= XkbAtomGetString(dpy,old_names->geometry); tmp= XkbAtomGetString(dpy,old_names->geometry);
names->geometry= _XkbDupString(tmp); names->geometry= Xstrdup(tmp);
complete|= XkmGeometryMask; complete|= XkmGeometryMask;
wantNames&= ~XkmGeometryMask; wantNames&= ~XkmGeometryMask;
} }
......
...@@ -58,19 +58,6 @@ XkbInternAtom(Display *dpy,char *str,Bool only_if_exists) ...@@ -58,19 +58,6 @@ XkbInternAtom(Display *dpy,char *str,Bool only_if_exists)
#define SEEK_SET 0 #define SEEK_SET 0
#endif #endif
char *
_XkbDupString(char *str)
{
char *new;
if (str==NULL)
return NULL;
new= (char *)_XkbCalloc(strlen(str)+1,sizeof(char));
if (new)
strcpy(new,str);
return new;
}
/***====================================================================***/ /***====================================================================***/
static XPointer static XPointer
...@@ -774,9 +761,9 @@ int nRead=0; ...@@ -774,9 +761,9 @@ int nRead=0;
doodad->text.height= doodadWire.text.height; doodad->text.height= doodadWire.text.height;
doodad->text.color_ndx= doodadWire.text.color_ndx; doodad->text.color_ndx= doodadWire.text.color_ndx;
nRead+= XkmGetCountedString(file,buf,100); nRead+= XkmGetCountedString(file,buf,100);
doodad->text.text= _XkbDupString(buf); doodad->text.text= Xstrdup(buf);
nRead+= XkmGetCountedString(file,buf,100); nRead+= XkmGetCountedString(file,buf,100);
doodad->text.font= _XkbDupString(buf); doodad->text.font= Xstrdup(buf);
break; break;
case XkbIndicatorDoodad: case XkbIndicatorDoodad:
doodad->indicator.shape_ndx= doodadWire.indicator.shape_ndx; doodad->indicator.shape_ndx= doodadWire.indicator.shape_ndx;
...@@ -788,7 +775,7 @@ int nRead=0; ...@@ -788,7 +775,7 @@ int nRead=0;
doodad->logo.color_ndx= doodadWire.logo.color_ndx; doodad->logo.color_ndx= doodadWire.logo.color_ndx;
doodad->logo.shape_ndx= doodadWire.logo.shape_ndx; doodad->logo.shape_ndx= doodadWire.logo.shape_ndx;
nRead+= XkmGetCountedString(file,buf,100); nRead+= XkmGetCountedString(file,buf,100);
doodad->logo.logo_name= _XkbDupString(buf); doodad->logo.logo_name= Xstrdup(buf);
break; break;
default: default:
/* report error? */ /* report error? */
...@@ -952,7 +939,7 @@ XkbGeometrySizesRec sizes; ...@@ -952,7 +939,7 @@ XkbGeometrySizesRec sizes;
geom->width_mm= wireGeom.width_mm; geom->width_mm= wireGeom.width_mm;
geom->height_mm= wireGeom.height_mm; geom->height_mm= wireGeom.height_mm;
nRead+= XkmGetCountedString(file,buf,100); nRead+= XkmGetCountedString(file,buf,100);
geom->label_font= _XkbDupString(buf); geom->label_font= Xstrdup(buf);
if (wireGeom.num_properties>0) { if (wireGeom.num_properties>0) {
char val[1024]; char val[1024];
for (i=0;i<wireGeom.num_properties;i++) { for (i=0;i<wireGeom.num_properties;i++) {
...@@ -1211,7 +1198,7 @@ char name[100]; ...@@ -1211,7 +1198,7 @@ char name[100];
return 0; return 0;
} }
if (XkmGetCountedString(file,name,100)>0) if (XkmGetCountedString(file,name,100)>0)
return _XkbDupString(name); return Xstrdup(name);
break; break;
default: default:
_XkbLibError(_XkbErrBadImplementation, _XkbLibError(_XkbErrBadImplementation,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment