diff options
author | Stefan Kost <ensonic@users.sf.net> | 2009-04-29 12:59:14 +0300 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2009-04-29 12:59:14 +0300 |
commit | a37604f464f59e33b21900dd803e5d27c3997bb3 (patch) | |
tree | 03ddd7e6c4d4c240e4bb2138fc43baf6f876dd57 /gtkdoc-scangobj.in | |
parent | d1d7169582fc5150c08cc3355edec06172ab100c (diff) | |
download | gtk-doc-a37604f464f59e33b21900dd803e5d27c3997bb3.tar.gz |
scan: remove one sprintf and guard one statuc buffer.
We use some fixed size strings to format the output, which might be dangerous.
What is left now is that output_object_signal() should use g_string or snprintf
with the remaining length.
Diffstat (limited to 'gtkdoc-scangobj.in')
-rw-r--r-- | gtkdoc-scangobj.in | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/gtkdoc-scangobj.in b/gtkdoc-scangobj.in index aa6f5f0..f7c6c21 100644 --- a/gtkdoc-scangobj.in +++ b/gtkdoc-scangobj.in @@ -313,8 +313,8 @@ output_object_signal (FILE *fp, GSignalQuery query_info; const gchar *type_name, *ret_type, *object_arg, *arg_name; gchar *pos, *object_arg_lower; - gboolean is_pointer; - gchar ret_type_buffer[1024], buffer[1024]; + gboolean is_pointer; + gchar buffer[1024]; guint i, param; const gchar **arg_names; gint param_num, widget_num, event_num, callback_num; @@ -329,10 +329,6 @@ output_object_signal (FILE *fp, g_signal_query (signal_id, &query_info); - /* Output the return type and function name. */ - ret_type = get_type_name (query_info.return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE, &is_pointer); - sprintf (ret_type_buffer, "%s%s", ret_type, is_pointer ? "*" : ""); - /* Output the signal object type and the argument name. We assume the type is a pointer - I think that is OK. We remove "Gtk" or "Gnome" and convert to lower case for the argument name. */ @@ -355,7 +351,8 @@ output_object_signal (FILE *fp, g_free(object_arg_lower); /* Convert signal name to use underscores rather than dashes '-'. */ - strcpy (signal_name, query_info.signal_name); + strncpy (signal_name, query_info.signal_name, 127); + signal_name[127] = '\0'; for (i = 0; signal_name[i]; i++) { if (signal_name[i] == '-') @@ -441,9 +438,12 @@ output_object_signal (FILE *fp, *pos++ = 'h'; *pos = 0; + /* Output the return type and function name. */ + ret_type = get_type_name (query_info.return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE, &is_pointer); + fprintf (fp, - "<SIGNAL>\\n<NAME>%s::%s</NAME>\\n<RETURNS>%s</RETURNS>\\n<FLAGS>%s</FLAGS>\\n%s</SIGNAL>\\n\\n", - object_name, query_info.signal_name, ret_type_buffer, flags, buffer); + "<SIGNAL>\\n<NAME>%s::%s</NAME>\\n<RETURNS>%s%s</RETURNS>\\n<FLAGS>%s</FLAGS>\\n%s</SIGNAL>\\n\\n", + object_name, query_info.signal_name, ret_type, is_pointer ? "*" : "", flags, buffer); } |