updated on Sun Jan 15 16:02:00 UTC 2012
[aur-mirror.git] / libgksu-ubuntu / 22_increase_gksu_helper_buf.patch~
blob2c63c100bbb493d0ee30919386863197c8fde3fb
1 === modified file 'libgksu/gksu-run-helper.c'
2 --- libgksu/gksu-run-helper.c   2008-06-10 14:14:50 +0000
3 +++ libgksu/gksu-run-helper.c   2008-06-11 12:25:55 +0000
4 @@ -63,6 +63,21 @@
5              dirname, strerror (errno));
6  }
7  
8 +void read_gstring_from_stdin(GString *s)
9 +{
10 +  gchar buffer[255];
11 +  char *readp;
12 +  do
13 +  {
14 +     readp = fgets(buffer, sizeof(buffer), stdin);
15 +     if(readp == NULL)
16 +       return;
17 +     strip (buffer);
18 +     g_string_append(s, buffer);
19 +  } while (sizeof(buffer)-1 == strlen(readp));
20 +  return;
23  int
24  main (int argc, char **argv)
25  {
26 @@ -79,8 +94,6 @@
27    gchar *xauth_token = NULL;
28    gchar *sn_id = NULL;
30 -  gchar buffer[255];
32    gint return_code;
34    if (argc < 2)
35 @@ -101,24 +114,22 @@
36    xauth_file = g_strdup_printf ("%s/.Xauthority",
37                                 xauth_dir);
39 -  fgets (buffer, 255, stdin);
40 -  strip (buffer);
41 +  GString *s = g_string_sized_new(255);
42 +  read_gstring_from_stdin(s);
44    /* strlen ("gksu-run: ") == 10, see su.c */
45 -  xauth_display = g_strdup_printf ("%s", buffer + 10);
47 -  bzero (buffer, 255);
48 -  fgets (buffer, 255, stdin);
49 -  strip (buffer);
51 -  sn_id = g_strdup_printf ("%s", buffer + 10);
52 +  xauth_display = g_strdup_printf ("%s", s->str + 10);
54 +  s = g_string_truncate(s,0);
55 +  read_gstring_from_stdin(s);
57 +  sn_id = g_strdup_printf ("%s", s->str + 10);
58    setenv("DESKTOP_STARTUP_ID", sn_id, TRUE);
60 -  bzero (buffer, 255);
61 -  fgets (buffer, 255, stdin);
62 -  strip (buffer);
63 +  s = g_string_truncate(s,0);
64 +  read_gstring_from_stdin(s);
66 -  xauth_token = g_strdup_printf ("%s", buffer + 10);
67 +  xauth_token = g_strdup_printf ("%s", s->str + 10);
69    /* a bit more security is always fine */
70    {
71 @@ -161,6 +172,7 @@
72      return_code = system (argv[1]);
73      
74      clean_dir (xauth_dir);
75 +    g_string_free(s, TRUE);
76      return return_code;
77    }
78  }