* [RFA] ARI fixes: Remove some sprintf calls
@ 2012-11-08 15:10 Pierre Muller
0 siblings, 0 replies; 3+ messages in thread
From: Pierre Muller @ 2012-11-08 15:10 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1222 bytes --]
I do not commit this as obvious because,
I had to add some local variables to simplify
things for several cases.
Is this OK?
Pierre Muller
as ARI maintainer
2012-11-08 Pierre Muller <muller@sourceware.org>
ARI fixes: Avoid sprintf function use rule.
* charset.c (convert_between_encodings): Use xsnprintf.
* cli-out.c (cli_field_int): Likewise.
* cp-namespace.c (cp_lookup_nested_symbol): Likewise.
* expprint.c (op_name_standard): Likewise.
* frv-tdep.c (set_variant_num_gprs): Likewise.
(set_variant_num_fprs): Likewise.
* windows-nat.c (struct): Likewise.
(windows_make_so): Likewise.
(handle_exception): Likewise.
(windows_pid_to_exec_file): Likewise.
(windows_create_inferior): Likewise.
(_initialize_check_for_gdb_ini): Likewise.
* m68hc11-tdep.c (m68hc11_initialize_register_info): Likewise.
* nto-tdep.c (nto_find_and_open_solib): Likewise.
(nto_init_solib_absolute_prefix): Likewise.
* source.c (init_source_path): Likewise.
(print_source_lines_base): Likewise.
* valprint.c (print_wchar): Likewise.
* mi/mi-out.c (mi_field_int): Likewise.
[-- Attachment #2: sprintf-v1.patch --]
[-- Type: application/octet-stream, Size: 13775 bytes --]
2012-11-08 Pierre Muller <muller@sourceware.org>
ARI fixes: Avoid sprintf function use rule.
* charset.c (convert_between_encodings): Use xsnprintf.
* cli-out.c (cli_field_int): Likewise.
* cp-namespace.c (cp_lookup_nested_symbol): Likewise.
* expprint.c (op_name_standard): Likewise.
* frv-tdep.c (set_variant_num_gprs): Likewise.
(set_variant_num_fprs): Likewise.
* windows-nat.c (struct): Likewise.
(windows_make_so): Likewise.
(handle_exception): Likewise.
(windows_pid_to_exec_file): Likewise.
(windows_create_inferior): Likewise.
(_initialize_check_for_gdb_ini): Likewise.
* m68hc11-tdep.c (m68hc11_initialize_register_info): Likewise.
* nto-tdep.c (nto_find_and_open_solib): Likewise.
(nto_init_solib_absolute_prefix): Likewise.
* source.c (init_source_path): Likewise.
(print_source_lines_base): Likewise.
* valprint.c (print_wchar): Likewise.
* mi/mi-out.c (mi_field_int): Likewise.
Index: charset.c
===================================================================
RCS file: /cvs/src/src/gdb/charset.c,v
retrieving revision 1.50
diff -u -p -r1.50 charset.c
--- charset.c 17 Apr 2012 15:47:09 -0000 1.50
+++ charset.c 8 Nov 2012 15:03:14 -0000
@@ -531,7 +531,7 @@ convert_between_encodings (const char *f
{
char octal[5];
- sprintf (octal, "\\%.3o", *inp & 0xff);
+ xsnprintf (octal, 5, "\\%.3o", *inp & 0xff);
obstack_grow_str (output, octal);
++inp;
Index: cli-out.c
===================================================================
RCS file: /cvs/src/src/gdb/cli-out.c,v
retrieving revision 1.34
diff -u -p -r1.34 cli-out.c
--- cli-out.c 4 Jan 2012 08:17:00 -0000 1.34
+++ cli-out.c 8 Nov 2012 15:03:14 -0000
@@ -139,7 +139,7 @@ cli_field_int (struct ui_out *uiout, int
if (data->suppress_output)
return;
- sprintf (buffer, "%d", value);
+ xsnprintf (buffer, 20, "%d", value);
/* Always go through the function pointer (virtual function call).
We may have been extended. */
Index: cp-namespace.c
===================================================================
RCS file: /cvs/src/src/gdb/cp-namespace.c,v
retrieving revision 1.58
diff -u -p -r1.58 cp-namespace.c
--- cp-namespace.c 13 Jun 2012 16:10:07 -0000 1.58
+++ cp-namespace.c 8 Nov 2012 15:03:14 -0000
@@ -688,6 +688,7 @@ cp_lookup_nested_symbol (struct type *pa
just like members of namespaces; in particular,
lookup_symbol_namespace works when looking them up. */
+ int size;
const char *parent_name = type_name_no_tag_or_error (saved_parent_type);
struct symbol *sym
= cp_lookup_symbol_in_namespace (parent_name, nested_name,
@@ -703,9 +704,9 @@ cp_lookup_nested_symbol (struct type *pa
namespace seach is is already not C++ compliant and more
assumptions could make it too magic. */
- concatenated_name = alloca (strlen (parent_name) + 2
- + strlen (nested_name) + 1);
- sprintf (concatenated_name, "%s::%s",
+ size = strlen (parent_name) + 2 + strlen (nested_name) + 1;
+ concatenated_name = alloca (size);
+ xsnprintf (concatenated_name, size, "%s::%s",
parent_name, nested_name);
sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
if (sym != NULL)
Index: expprint.c
===================================================================
RCS file: /cvs/src/src/gdb/expprint.c,v
retrieving revision 1.62
diff -u -p -r1.62 expprint.c
--- expprint.c 2 Nov 2012 00:14:37 -0000 1.62
+++ expprint.c 8 Nov 2012 15:03:14 -0000
@@ -670,7 +670,7 @@ op_name_standard (enum exp_opcode opcode
{
static char buf[30];
- sprintf (buf, "<unknown %d>", opcode);
+ xsnprintf (buf, 30, "<unknown %d>", opcode);
return buf;
}
#define OP(name) \
Index: frv-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/frv-tdep.c,v
retrieving revision 1.138
diff -u -p -r1.138 frv-tdep.c
--- frv-tdep.c 18 May 2012 21:02:47 -0000 1.138
+++ frv-tdep.c 8 Nov 2012 15:03:15 -0000
@@ -233,7 +233,7 @@ set_variant_num_gprs (struct gdbarch_tde
{
char buf[20];
- sprintf (buf, "gr%d", r);
+ xsnprintf (buf, 20, "gr%d", r);
var->register_names[first_gpr_regnum + r] = xstrdup (buf);
}
}
@@ -252,7 +252,7 @@ set_variant_num_fprs (struct gdbarch_tde
{
char buf[20];
- sprintf (buf, "fr%d", r);
+ xsnprintf (buf, 20, "fr%d", r);
var->register_names[first_fpr_regnum + r] = xstrdup (buf);
}
}
Index: windows-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/windows-nat.c,v
retrieving revision 1.234
diff -u -p -r1.234 windows-nat.c
--- windows-nat.c 24 Oct 2012 13:40:16 -0000 1.234
+++ windows-nat.c 8 Nov 2012 15:03:15 -0000
@@ -613,6 +613,7 @@ struct safe_symbol_file_add_args
struct lm_info
{
LPVOID load_addr;
+ unsigned long text_offset;
};
static struct so_list solib_start, *solib_end;
@@ -778,6 +779,7 @@ windows_make_so (const char *name, LPVOI
}
#endif
+
return so;
}
@@ -1227,11 +1229,18 @@ handle_exception (struct target_waitstat
default:
/* Treat unhandled first chance exceptions specially. */
if (current_event.u.Exception.dwFirstChance)
- return -1;
- printf_unfiltered ("gdb: unknown target exception 0x%08lx at %s\n",
- current_event.u.Exception.ExceptionRecord.ExceptionCode,
- host_address_to_string (
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ {
+ DEBUG_EXCEPT (("gdb: Unknown FirstChance exception 0x%08lx at %s\n",
+ current_event.u.Exception.ExceptionRecord.ExceptionCode,
+ host_address_to_string (
+ current_event.u.Exception.ExceptionRecord.ExceptionAddress)));
+ return -1;
+ }
+ else
+ printf_unfiltered ("gdb: unknown target exception 0x%08lx at %s\n",
+ current_event.u.Exception.ExceptionRecord.ExceptionCode,
+ host_address_to_string (
+ current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = GDB_SIGNAL_UNKNOWN;
break;
}
@@ -1892,10 +1901,11 @@ windows_pid_to_exec_file (int pid)
{
static char path[__PMAX];
#ifdef __CYGWIN__
+#define MAX_PROC_EXE_SIZE sizeof ("/proc/4294967295/exe")
/* Try to find exe name as symlink target of /proc/<pid>/exe. */
int nchars;
- char procexe[sizeof ("/proc/4294967295/exe")];
- sprintf (procexe, "/proc/%u/exe", pid);
+ char procexe[MAX_PROC_EXE_SIZE];
+ xsnprintf (procexe, MAX_PROC_EXE_SIZE, "/proc/%u/exe", pid);
nchars = readlink (procexe, path, sizeof(path));
if (nchars > 0 && nchars < sizeof (path))
{
@@ -2093,10 +2103,9 @@ windows_create_inferior (struct target_o
cygallargs = (wchar_t *) alloca (len * sizeof (wchar_t));
swprintf (cygallargs, len, L" -c 'exec %s %s'", exec_file, allargs);
#else
- cygallargs = (char *)
- alloca (sizeof (" -c 'exec '") + strlen (exec_file)
- + strlen (allargs) + 2);
- sprintf (cygallargs, " -c 'exec %s %s'", exec_file, allargs);
+ len = sizeof (" -c 'exec '") + strlen (exec_file) + strlen (allargs) + 2;
+ cygallargs = (char *) alloca (len);
+ xsnprintf (cygallargs, len, " -c 'exec %s %s'", exec_file, allargs);
#endif
toexec = shell;
flags |= DEBUG_PROCESS;
@@ -2724,7 +2733,7 @@ _initialize_check_for_gdb_ini (void)
{
int len = strlen (oldini);
char *newini = alloca (len + 1);
- sprintf (newini, "%.*s.gdbinit",
+ xsnprintf (newini, len + 1, "%.*s.gdbinit",
(int) (len - (sizeof ("gdb.ini") - 1)), oldini);
warning (_("obsolete '%s' found. Rename to '%s'."), oldini, newini);
}
Index: m68hc11-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m68hc11-tdep.c,v
retrieving revision 1.140
diff -u -p -r1.140 m68hc11-tdep.c
--- m68hc11-tdep.c 25 Sep 2012 12:48:53 -0000 1.140
+++ m68hc11-tdep.c 8 Nov 2012 15:03:15 -0000
@@ -247,7 +247,7 @@ m68hc11_initialize_register_info (void)
{
char buf[10];
- sprintf (buf, "_.d%d", i - SOFT_D1_REGNUM + 1);
+ xsnprintf (buf, 10, "_.d%d", i - SOFT_D1_REGNUM + 1);
m68hc11_get_register_info (&soft_regs[i], buf);
}
Index: nto-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/nto-tdep.c,v
retrieving revision 1.45
diff -u -p -r1.45 nto-tdep.c
--- nto-tdep.c 2 Aug 2012 09:27:14 -0000 1.45
+++ nto-tdep.c 8 Nov 2012 15:03:15 -0000
@@ -89,7 +89,7 @@ nto_find_and_open_solib (char *solib, un
char *buf, *arch_path, *nto_root, *endian;
const char *base;
const char *arch;
- int ret;
+ int archlen, len, ret;
#define PATH_FMT \
"%s/lib:%s/usr/lib:%s/usr/photon/lib:%s/usr/photon/dll:%s/lib/dll"
@@ -116,20 +116,22 @@ nto_find_and_open_solib (char *solib, un
/* In case nto_root is short, add strlen(solib)
so we can reuse arch_path below. */
- arch_path =
- alloca (strlen (nto_root) + strlen (arch) + strlen (endian) + 2 +
- strlen (solib));
- sprintf (arch_path, "%s/%s%s", nto_root, arch, endian);
-
- buf = alloca (strlen (PATH_FMT) + strlen (arch_path) * 5 + 1);
- sprintf (buf, PATH_FMT, arch_path, arch_path, arch_path, arch_path,
- arch_path);
+
+ archlen = strlen (nto_root) + strlen (arch) + strlen (endian) + 2
+ + strlen (solib);
+ arch_path = alloca (archlen);
+ xsnprintf (arch_path, archlen, "%s/%s%s", nto_root, arch, endian);
+
+ len = strlen (PATH_FMT) + strlen (arch_path) * 5 + 1;
+ buf = alloca (len);
+ xsnprintf (buf, len, PATH_FMT, arch_path, arch_path, arch_path, arch_path,
+ arch_path);
base = lbasename (solib);
ret = openp (buf, 1, base, o_flags, temp_pathname);
if (ret < 0 && base != solib)
{
- sprintf (arch_path, "/%s", solib);
+ xsnprintf (arch_path, archlen, "/%s", solib);
ret = open (arch_path, o_flags, 0);
if (temp_pathname)
{
@@ -170,9 +172,9 @@ nto_init_solib_absolute_prefix (void)
== BFD_ENDIAN_BIG ? "be" : "le";
}
- sprintf (arch_path, "%s/%s%s", nto_root, arch, endian);
+ xsnprintf (arch_path, PATH_MAX, "%s/%s%s", nto_root, arch, endian);
- sprintf (buf, "set solib-absolute-prefix %s", arch_path);
+ xsnprintf (buf, PATH_MAX * 2, "set solib-absolute-prefix %s", arch_path);
execute_command (buf, 0);
}
Index: source.c
===================================================================
RCS file: /cvs/src/src/gdb/source.c,v
retrieving revision 1.139
diff -u -p -r1.139 source.c
--- source.c 8 Nov 2012 04:05:16 -0000 1.139
+++ source.c 8 Nov 2012 15:03:15 -0000
@@ -384,7 +384,7 @@ init_source_path (void)
{
char buf[20];
- sprintf (buf, "$cdir%c$cwd", DIRNAME_SEPARATOR);
+ xsnprintf (buf, 20, "$cdir%c$cwd", DIRNAME_SEPARATOR);
source_path = xstrdup (buf);
forget_cached_source_info ();
}
@@ -1292,8 +1292,9 @@ print_source_lines_base (struct symtab *
if (!noerror)
{
- char *name = alloca (strlen (s->filename) + 100);
- sprintf (name, "%d\t%s", line, s->filename);
+ int len = strlen (s->filename) + 100;
+ char *name = alloca (len);
+ xsnprintf (name, len, "%d\t%s", line, s->filename);
print_sys_errmsg (name, errno);
}
else
@@ -1337,13 +1338,13 @@ print_source_lines_base (struct symtab *
if (c == EOF)
break;
last_line_listed = current_source_line;
- sprintf (buf, "%d\t", current_source_line++);
+ xsnprintf (buf, 20, "%d\t", current_source_line++);
ui_out_text (uiout, buf);
do
{
if (c < 040 && c != '\t' && c != '\n' && c != '\r')
{
- sprintf (buf, "^%c", c + 0100);
+ xsnprintf (buf, 20, "^%c", c + 0100);
ui_out_text (uiout, buf);
}
else if (c == 0177)
@@ -1360,7 +1361,7 @@ print_source_lines_base (struct symtab *
}
else
{
- sprintf (buf, "%c", c);
+ xsnprintf (buf, 20, "%c", c);
ui_out_text (uiout, buf);
}
}
Index: valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/valprint.c,v
retrieving revision 1.129
diff -u -p -r1.129 valprint.c
--- valprint.c 18 Oct 2012 15:26:01 -0000 1.129
+++ valprint.c 8 Nov 2012 15:03:15 -0000
@@ -1937,9 +1937,9 @@ print_wchar (gdb_wint_t w, const gdb_byt
/* If the value fits in 3 octal digits, print it that
way. Otherwise, print it as a hex escape. */
if (value <= 0777)
- sprintf (octal, "\\%.3o", (int) (value & 0777));
+ xsnprintf (octal, 30, "\\%.3o", (int) (value & 0777));
else
- sprintf (octal, "\\x%lx", (long) value);
+ xsnprintf (octal, 30, "\\x%lx", (long) value);
append_string_as_wide (octal, output);
}
/* If we somehow have extra bytes, print them now. */
@@ -1947,7 +1947,7 @@ print_wchar (gdb_wint_t w, const gdb_byt
{
char octal[5];
- sprintf (octal, "\\%.3o", orig[i] & 0xff);
+ xsnprintf (octal, 5, "\\%.3o", orig[i] & 0xff);
append_string_as_wide (octal, output);
++i;
}
Index: mi/mi-out.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-out.c,v
retrieving revision 1.43
diff -u -p -r1.43 mi-out.c
--- mi/mi-out.c 6 Mar 2012 22:48:53 -0000 1.43
+++ mi/mi-out.c 8 Nov 2012 15:03:15 -0000
@@ -198,7 +198,7 @@ mi_field_int (struct ui_out *uiout, int
if (data->suppress_output)
return;
- sprintf (buffer, "%d", value);
+ xsnprintf (buffer, 20, "%d", value);
mi_field_string (uiout, fldno, width, alignment, fldname, buffer);
}
^ permalink raw reply [flat|nested] 3+ messages in thread[parent not found: <4297.05661158568$1352387430@news.gmane.org>]
* Re: [RFA] ARI fixes: Remove some sprintf calls
[not found] <4297.05661158568$1352387430@news.gmane.org>
@ 2012-11-08 17:25 ` Andreas Schwab
2012-11-08 21:34 ` Tom Tromey
1 sibling, 0 replies; 3+ messages in thread
From: Andreas Schwab @ 2012-11-08 17:25 UTC (permalink / raw)
To: Pierre Muller; +Cc: gdb-patches
"Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr> writes:
> Index: charset.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/charset.c,v
> retrieving revision 1.50
> diff -u -p -r1.50 charset.c
> --- charset.c 17 Apr 2012 15:47:09 -0000 1.50
> +++ charset.c 8 Nov 2012 15:03:14 -0000
> @@ -531,7 +531,7 @@ convert_between_encodings (const char *f
> {
> char octal[5];
>
> - sprintf (octal, "\\%.3o", *inp & 0xff);
> + xsnprintf (octal, 5, "\\%.3o", *inp & 0xff);
sizeof(octal)?
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [RFA] ARI fixes: Remove some sprintf calls
[not found] <4297.05661158568$1352387430@news.gmane.org>
2012-11-08 17:25 ` Andreas Schwab
@ 2012-11-08 21:34 ` Tom Tromey
1 sibling, 0 replies; 3+ messages in thread
From: Tom Tromey @ 2012-11-08 21:34 UTC (permalink / raw)
To: Pierre Muller; +Cc: gdb-patches
>>>>> "Pierre" == Pierre Muller <pierre.muller@ics-cnrs.unistra.fr> writes:
Pierre> I do not commit this as obvious because,
Pierre> I had to add some local variables to simplify
Pierre> things for several cases.
Pierre> Is this OK?
I like Andreas' suggestion.
Also:
Pierre> +++ windows-nat.c 8 Nov 2012 15:03:15 -0000
Pierre> @@ -613,6 +613,7 @@ struct safe_symbol_file_add_args
Pierre> struct lm_info
Pierre> {
Pierre> LPVOID load_addr;
Pierre> + unsigned long text_offset;
Pierre> };
Pierre> static struct so_list solib_start, *solib_end;
Pierre> @@ -778,6 +779,7 @@ windows_make_so (const char *name, LPVOI
Pierre> }
Pierre> #endif
Pierre> +
Pierre> return so;
Pierre> }
These hunks don't seem related to the patch.
Pierre> @@ -1227,11 +1229,18 @@ handle_exception (struct target_waitstat
Pierre> default:
Pierre> /* Treat unhandled first chance exceptions specially. */
Pierre> if (current_event.u.Exception.dwFirstChance)
Pierre> - return -1;
Pierre> - printf_unfiltered ("gdb: unknown target exception 0x%08lx at %s\n",
Pierre> - current_event.u.Exception.ExceptionRecord.ExceptionCode,
Pierre> - host_address_to_string (
Pierre> - current_event.u.Exception.ExceptionRecord.ExceptionAddress));
Pierre> + {
Pierre> + DEBUG_EXCEPT (("gdb: Unknown FirstChance exception 0x%08lx at %s\n",
Pierre> + current_event.u.Exception.ExceptionRecord.ExceptionCode,
Pierre> + host_address_to_string (
Pierre> + current_event.u.Exception.ExceptionRecord.ExceptionAddress)));
Pierre> + return -1;
Pierre> + }
Pierre> + else
Pierre> + printf_unfiltered ("gdb: unknown target exception 0x%08lx at %s\n",
Pierre> + current_event.u.Exception.ExceptionRecord.ExceptionCode,
Pierre> + host_address_to_string (
Pierre> + current_event.u.Exception.ExceptionRecord.ExceptionAddress));
This one either.
Tom
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-11-08 21:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-08 15:10 [RFA] ARI fixes: Remove some sprintf calls Pierre Muller
[not found] <4297.05661158568$1352387430@news.gmane.org>
2012-11-08 17:25 ` Andreas Schwab
2012-11-08 21:34 ` Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox