summaryrefslogtreecommitdiff
path: root/gtkdoc-scangobj.in
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2009-04-29 12:59:14 +0300
committerStefan Kost <ensonic@users.sf.net>2009-04-29 12:59:14 +0300
commita37604f464f59e33b21900dd803e5d27c3997bb3 (patch)
tree03ddd7e6c4d4c240e4bb2138fc43baf6f876dd57 /gtkdoc-scangobj.in
parentd1d7169582fc5150c08cc3355edec06172ab100c (diff)
downloadgtk-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.in18
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);
}