From mboxrd@z Thu Jan 1 00:00:00 1970 From: david.goulet@polymtl.ca (David Goulet) Date: Mon, 30 Jan 2012 16:35:16 -0500 Subject: [lttng-dev] [PATCH] Rewrites lttng-ctl's set_session_daemon_path(), fix snprintf() return value tests so the code works with both GNU C < 2.1 and >= 2.1 In-Reply-To: <3CA1A65C03C1A34C81BBC6272782E6968089F7@valcartierex01.valcartier.drdc-rddc.gc.ca> References: <3CA1A65C03C1A34C81BBC6272782E69680895F@valcartierex01.valcartier.drdc-rddc.gc.ca> <4F22FF2C.3060604@polymtl.ca> <3CA1A65C03C1A34C81BBC6272782E696808968@valcartierex01.valcartier.drdc-rddc.gc.ca> <4F26DD60.2090909@polymtl.ca> <3CA1A65C03C1A34C81BBC6272782E6968089F7@valcartierex01.valcartier.drdc-rddc.gc.ca> Message-ID: <4F270D14.3010305@polymtl.ca> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Merged thanks! We did indeed validate the function and it's seems ok and test passes. If you are changing good portion of code, you can run "make check" to start the tests and you'll see if you break something. It's not very complete tests but it's a start. Cheers David On 12-01-30 04:26 PM, Thibault, Daniel wrote: > This fifth patch rewrites lttng-ctl's set_session_daemon_path() to avoid duplicating snippets of code. It also fixes the snprintf return value test so the code works with both GNU C < 2.1 and >= 2.1. With GNU C < 2.1, snprintf returns -1 if the target buffer is too small; with GNU C >= 2.1, snprintf returns the required size (excluding the closing null) under the same conditions. > > I do believe it is functionally identical to the version it replaces, but someone should check to make sure. :-) > > ------------------------------ > From 3d90c8707c362c9ecf0836c25d500c818ba2e2f0 Mon, 30 Jan 2012 16:25:29 -0500 > From: Daniel U. Thibault > Date: Mon, 30 Jan 2012 16:25:15 -0500 > Subject: [PATCH] Rewrites lttng-ctl's set_session_daemon_path(), fix snprintf() return value tests so the code works with both GNU C < 2.1 and >= 2.1 > > Signed-off-by: Daniel U. Thibault > > diff --git a/lttng2-lttng-tools-2.0-pre18+-5c73c59/src/lib/lttng-ctl/lttng-ctl.c b/lttng2-lttng-tools-2.0-pre18+-5c73c59/src/lib/lttng-ctl/lttng-ctl.c > index 537934f..65aa3e3 100644 > --- a/lttng2-lttng-tools-2.0-pre18+-5c73c59/src/lib/lttng-ctl/lttng-ctl.c > +++ b/lttng2-lttng-tools-2.0-pre18+-5c73c59/src/lib/lttng-ctl/lttng-ctl.c > @@ -228,35 +228,31 @@ > in_tgroup = check_tracing_group(tracing_group); > } > > - if (uid == 0) { > - /* Root */ > + if ((uid == 0) || in_tgroup) { > copy_string(sessiond_sock_path, > DEFAULT_GLOBAL_CLIENT_UNIX_SOCK, > sizeof(sessiond_sock_path)); > - } else if (in_tgroup) { > - /* Tracing group */ > - copy_string(sessiond_sock_path, > - DEFAULT_GLOBAL_CLIENT_UNIX_SOCK, > - sizeof(sessiond_sock_path)); > - > - ret = try_connect_sessiond(sessiond_sock_path); > - if (ret < 0) { > - /* Global session daemon not available */ > - if (snprintf(sessiond_sock_path, sizeof(sessiond_sock_path), > - DEFAULT_HOME_CLIENT_UNIX_SOCK, > - getenv("HOME")) < 0) { > - return -ENOMEM; > - } > } > - } else { > - /* Not in tracing group and not root, default */ > - if (snprintf(sessiond_sock_path, PATH_MAX, > - DEFAULT_HOME_CLIENT_UNIX_SOCK, > - getenv("HOME")) < 0) { > + if (uid != 0) { > + if (in_tgroup) { > + /* Tracing group */ > + ret = try_connect_sessiond(sessiond_sock_path); > + if (ret >= 0) goto end; > + /* Global session daemon not available... */ > + } > + /* ...or not in tracing group (and not root), default */ > + /* > + * With GNU C < 2.1, snprintf returns -1 if the target buffer is too small; > + * With GNU C >= 2.1, snprintf returns the required size (excluding closing null) > + */ > + ret = snprintf(sessiond_sock_path, sizeof(sessiond_sock_path), > + DEFAULT_HOME_CLIENT_UNIX_SOCK, > + getenv("HOME")); > + if ((ret < 0) || (ret >= sizeof(sessiond_sock_path))) { > return -ENOMEM; > } > } > - > +end: > return 0; > } > > ------------------------------ > > Daniel U. Thibault > R & D pour la d?fense Canada - Valcartier (RDDC Valcartier) / Defence R&D Canada - Valcartier (DRDC Valcartier) > Syst?me de syst?mes (SdS) / System of Systems (SoS) > Solutions informatiques et exp?rimentations (SIE) / Computing Solutions and Experimentations (CSE) > 2459 Boul. Pie XI Nord > Qu?bec, QC G3J 1X5 > CANADA > Vox : (418) 844-4000 x4245 > Fax : (418) 844-4538 > NAC: 918V QSDJ > Gouvernement du Canada / Government of Canada > > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQEcBAEBAgAGBQJPJw0UAAoJEELoaioR9I02eSsIAMjz/mUaOmPnK4pt187VIDin ibA80F8irkILJfZMa1Vx2E4KsvDpAsmeVBlsf72A8otUsMNf72V0T+Vm2sRsXxK4 Xy4Y79QMaMplk1XgYcRZqTEIQear02SxG+rQMIo4R+gZxXWpyy+vC63mQoib67wE v70w6t8nJ0q9cZasxUKu1iibu5GSGul7aQZi0naPJ2ODiFG6cXVUe0IBqhcF4RYe 7nXOauNLeUAMGuBHRetEzaXy3dr/F6ff1WctP2Smq0pRjKg5FGPg9T09uK2dVJAm /ZLkcsF0dfK6fwppUG3Lof0M/p+ala/C9R62o0hwkdsPdckTnkfTYsE5J2ClxZw= =89FN -----END PGP SIGNATURE-----