[PATCH:libX11 04/12] ximcp/imRm.c: convert sprintf calls to snprintf
walter harms
wharms at bfs.de
Sun Aug 11 00:49:49 PDT 2013
Am 10.08.2013 22:55, schrieb Alan Coopersmith:
> Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
> ---
> modules/im/ximcp/imRm.c | 44 ++++++++++++++++++++++++++++++--------------
> 1 file changed, 30 insertions(+), 14 deletions(-)
>
> diff --git a/modules/im/ximcp/imRm.c b/modules/im/ximcp/imRm.c
> index dd0b99e..4c46252 100644
> --- a/modules/im/ximcp/imRm.c
> +++ b/modules/im/ximcp/imRm.c
> @@ -75,8 +75,10 @@ _XimSetProtoResource(im)
> {
> char res_name_buf[256];
> char* res_name;
> + size_t res_name_len;
> char res_class_buf[256];
> char* res_class;
> + size_t res_class_len;
> char* str_type;
> XrmValue value;
> XIMStyle preedit_style = 0;
> @@ -90,17 +92,31 @@ _XimSetProtoResource(im)
> if (!im->core.rdb)
> return;
>
> - if (strlen (im->core.res_name) < 200) res_name = res_name_buf;
> - else res_name = Xmalloc (strlen (im->core.res_name) + 50);
> - if (strlen (im->core.res_class) < 200) res_class = res_class_buf;
> - else res_class = Xmalloc (strlen (im->core.res_class) + 50);
> + res_name_len = strlen (im->core.res_name);
> + if (res_name_len < 200) {
> + res_name = res_name_buf;
> + res_name_len = sizeof(res_name_buf);
> + }
> + else {
> + res_name_len += 50;
> + res_name = Xmalloc (res_name_len);
> + }
> + res_class_len = strlen (im->core.res_class);
> + if (res_class_len < 200) {
> + res_class = res_class_buf;
> + res_class_len = sizeof(res_class_buf);
> + }
> + else {
> + res_class_len += 50;
> + res_class = Xmalloc (res_class_len);
> + }
> /* pretend malloc always works */
>
Does that thing store only a string ? it looks that it is more easy
to asprintf() here.
re,
wh
> - (void) sprintf (res_name, "%s%s%s",
> + (void) snprintf (res_name, res_name_len, "%s%s%s",
> im->core.res_name != NULL ? im->core.res_name : "*",
> im->core.res_name != NULL ? dotximdot : ximdot,
> "useAuth");
> - (void) sprintf (res_class, "%s%s%s",
> + (void) snprintf (res_class, res_class_len, "%s%s%s",
> im->core.res_class != NULL ? im->core.res_class : "*",
> im->core.res_class != NULL ? dotXimdot : Ximdot,
> "UseAuth");
> @@ -111,11 +127,11 @@ _XimSetProtoResource(im)
> }
> }
>
> - (void) sprintf (res_name, "%s%s%s",
> + (void) snprintf (res_name, res_name_len, "%s%s%s",
> im->core.res_name != NULL ? im->core.res_name : "*",
> im->core.res_name != NULL ? dotximdot : ximdot,
> "delaybinding");
> - (void) sprintf (res_class, "%s%s%s",
> + (void) snprintf (res_class, res_class_len, "%s%s%s",
> im->core.res_class != NULL ? im->core.res_class : "*",
> im->core.res_class != NULL ? dotXimdot : Ximdot,
> "Delaybinding");
> @@ -126,11 +142,11 @@ _XimSetProtoResource(im)
> }
> }
>
> - (void) sprintf (res_name, "%s%s%s",
> + (void) snprintf (res_name, res_name_len, "%s%s%s",
> im->core.res_name != NULL ? im->core.res_name : "*",
> im->core.res_name != NULL ? dotximdot : ximdot,
> "reconnect");
> - (void) sprintf (res_class, "%s%s%s",
> + (void) snprintf (res_class, res_class_len, "%s%s%s",
> im->core.res_class != NULL ? im->core.res_class : "*",
> im->core.res_class != NULL ? dotXimdot : Ximdot,
> "Reconnect");
> @@ -147,11 +163,11 @@ _XimSetProtoResource(im)
> return;
> }
>
> - (void) sprintf (res_name, "%s%s%s",
> + (void) snprintf (res_name, res_name_len, "%s%s%s",
> im->core.res_name != NULL ? im->core.res_name : "*",
> im->core.res_name != NULL ? dotximdot : ximdot,
> "preeditDefaultStyle");
> - (void) sprintf (res_class, "%s%s%s",
> + (void) snprintf (res_class, res_class_len, "%s%s%s",
> im->core.res_class != NULL ? im->core.res_class : "*",
> im->core.res_class != NULL ? dotXimdot : Ximdot,
> "PreeditDefaultStyle");
> @@ -170,11 +186,11 @@ _XimSetProtoResource(im)
> if(!preedit_style)
> preedit_style = XIMPreeditNothing;
>
> - (void) sprintf (res_name, "%s%s%s",
> + (void) snprintf (res_name, res_name_len, "%s%s%s",
> im->core.res_name != NULL ? im->core.res_name : "*",
> im->core.res_name != NULL ? dotximdot : ximdot,
> "statusDefaultStyle");
> - (void) sprintf (res_class, "%s%s%s",
> + (void) snprintf (res_class, res_class_len, "%s%s%s",
> im->core.res_class != NULL ? im->core.res_class : "*",
> im->core.res_class != NULL ? dotXimdot : Ximdot,
> "StatusDefaultStyle");
More information about the xorg-devel
mailing list