[Debian-ha-commits] [pacemaker] 38/69: crm_resource --list-agents: don't print uninitialized memory

Christoph Berg myon at debian.org
Tue Jan 26 09:14:27 UTC 2016


This is an automated email from the git hooks/post-receive script.

myon pushed a commit to branch debian/master
in repository pacemaker.

commit 2482e1aa59c2fb2a758e5036163326456c52fb1b
Author: Ferenc Wágner <wferi at niif.hu>
Date:   Tue Jan 5 03:43:19 2016 +0100

    crm_resource --list-agents: don't print uninitialized memory
    
    When the first character of the argument is a colon, the original code
    printed uninitialized memory, because sscanf returned 0.  For example:
    
    $ /usr/sbin/crm_resource --list-agents=:
    No agents found for standard=øDÀ, provider=
    
    This patch avoids using arbitrarily sized buffers, and separates
    standard and provider by changing argv through the optarg pointer.
    
    Signed-off-by: Ferenc Wágner <wferi at niif.hu>
---
 tools/crm_resource.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/tools/crm_resource.c b/tools/crm_resource.c
index 1b2976b..a60c5b9 100644
--- a/tools/crm_resource.c
+++ b/tools/crm_resource.c
@@ -375,18 +375,16 @@ main(int argc, char **argv)
                 } else if (safe_str_eq("list-agents", longname)) {
                     lrmd_list_t *list = NULL;
                     lrmd_list_t *iter = NULL;
-                    char standard[512];
-                    char provider[512];
+                    char *provider = strchr (optarg, ':');
                     lrmd_t *lrmd_conn = lrmd_api_new();
 
-                    rc = sscanf(optarg, "%[^:]:%s", standard, provider);
-                    if (rc == 1) {
+                    if (!provider) {
                         rc = lrmd_conn->cmds->list_agents(lrmd_conn, &list, optarg, NULL);
-                        provider[0] = '*';
-                        provider[1] = 0;
+                        provider = "*";
 
-                    } else if (rc == 2) {
-                        rc = lrmd_conn->cmds->list_agents(lrmd_conn, &list, standard, provider);
+                    } else {
+                        *provider++ = 0;
+                        rc = lrmd_conn->cmds->list_agents(lrmd_conn, &list, optarg, provider);
                     }
 
                     if (rc > 0) {
@@ -398,7 +396,7 @@ main(int argc, char **argv)
                         lrmd_list_freeall(list);
                         rc = 0;
                     } else {
-                        fprintf(stderr, "No agents found for standard=%s, provider=%s\n", standard,
+                        fprintf(stderr, "No agents found for standard=%s, provider=%s\n", optarg,
                                 provider);
                         rc = -1;
                     }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-ha/pacemaker.git



More information about the Debian-HA-Commits mailing list