kov changed libgksu/trunk/ChangeLog, libgksu/trunk/libgksu/gksu-run-helper.c
Gustavo Noronha
kov at alioth.debian.org
Sat Jun 21 00:23:41 UTC 2008
Mensagem de log:
* libgksu/gksu-run-helper.c: accepted patch by Michael Vogt, from
Ubuntu, to fix very long commands not fitting in the helper's
statically-sized buffer (Debian bug #486087, launchpad #173757)
-----
Modified: libgksu/trunk/ChangeLog
===================================================================
--- libgksu/trunk/ChangeLog 2008-06-21 00:14:30 UTC (rev 824)
+++ libgksu/trunk/ChangeLog 2008-06-21 00:23:41 UTC (rev 825)
@@ -1,5 +1,9 @@
2008-06-20 Gustavo Noronha Silva <kov at debian.org>
+ * libgksu/gksu-run-helper.c: accepted patch by Michael Vogt, from
+ Ubuntu, to fix very long commands not fitting in the helper's
+ statically-sized buffer (Debian bug #486087, launchpad #173757)
+
* libgksu/libgksu.c (sudo_full): accepted patch by Michael Vogt,
from Ubuntu, to fix sudo having problems resolving network
addresses breaking gksu (Debian bug #486083, launchpad #237325)
Modified: libgksu/trunk/libgksu/gksu-run-helper.c
===================================================================
--- libgksu/trunk/libgksu/gksu-run-helper.c 2008-06-21 00:14:30 UTC (rev 824)
+++ libgksu/trunk/libgksu/gksu-run-helper.c 2008-06-21 00:23:41 UTC (rev 825)
@@ -63,6 +63,21 @@
dirname, strerror (errno));
}
+void read_gstring_from_stdin(GString *s)
+{
+ gchar buffer[255];
+ char *readp;
+ do
+ {
+ readp = fgets(buffer, sizeof(buffer), stdin);
+ if(readp == NULL)
+ return;
+ strip (buffer);
+ g_string_append(s, buffer);
+ } while (sizeof(buffer)-1 == strlen(readp));
+ return;
+}
+
int
main (int argc, char **argv)
{
@@ -79,8 +94,6 @@
gchar *xauth_token = NULL;
gchar *sn_id = NULL;
- gchar buffer[255];
-
gint return_code;
if (argc < 2)
@@ -101,24 +114,22 @@
xauth_file = g_strdup_printf ("%s/.Xauthority",
xauth_dir);
- fgets (buffer, 255, stdin);
- strip (buffer);
+ GString *s = g_string_sized_new(255);
+ read_gstring_from_stdin(s);
/* strlen ("gksu-run: ") == 10, see su.c */
- xauth_display = g_strdup_printf ("%s", buffer + 10);
+ xauth_display = g_strdup_printf ("%s", s->str + 10);
- bzero (buffer, 255);
- fgets (buffer, 255, stdin);
- strip (buffer);
+ s = g_string_truncate(s,0);
+ read_gstring_from_stdin(s);
- sn_id = g_strdup_printf ("%s", buffer + 10);
+ sn_id = g_strdup_printf ("%s", s->str + 10);
setenv("DESKTOP_STARTUP_ID", sn_id, TRUE);
- bzero (buffer, 255);
- fgets (buffer, 255, stdin);
- strip (buffer);
+ s = g_string_truncate(s,0);
+ read_gstring_from_stdin(s);
- xauth_token = g_strdup_printf ("%s", buffer + 10);
+ xauth_token = g_strdup_printf ("%s", s->str + 10);
/* a bit more security is always fine */
{
@@ -161,6 +172,7 @@
return_code = system (argv[1]);
clean_dir (xauth_dir);
+ g_string_free(s, TRUE);
return return_code;
}
}
More information about the gksu-commits
mailing list