ctdb: Fix CID 1125613 Destination buffer too small
authorVolker Lendecke <vl@samba.org>
Fri, 13 Mar 2015 14:20:05 +0000 (14:20 +0000)
committerMichael Adam <obnox@samba.org>
Fri, 13 Mar 2015 18:14:20 +0000 (19:14 +0100)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Autobuild-User(master): Michael Adam <obnox@samba.org>
Autobuild-Date(master): Fri Mar 13 19:14:20 CET 2015 on sn-devel-104

ctdb/server/eventscript.c

index b51d95350db0a618d0dc7ab9e3e17e25ff407b62..4dd437924f3b4cf7fa5a6c548c7c885a5faef8d8 100644 (file)
@@ -184,7 +184,12 @@ static struct ctdb_scripts_wire *ctdb_get_script_list(struct ctdb_context *ctdb,
        for (i = 0; i < count; i++) {
                struct ctdb_script_wire *s = &scripts->scripts[i];
 
-               strcpy(s->name, namelist[i]->d_name);
+               if (strlcpy(s->name, namelist[i]->d_name, sizeof(s->name)) >=
+                   sizeof(s->name)) {
+                       s->status = -ENAMETOOLONG;
+                       continue;
+               }
+
                s->status = 0;
                if (!check_executable(ctdb->event_script_dir,
                                      namelist[i]->d_name)) {
@@ -335,6 +340,7 @@ static int script_status(struct ctdb_scripts_wire *scripts)
 
        for (i = 0; i < scripts->num_scripts; i++) {
                switch (scripts->scripts[i].status) {
+               case -ENAMETOOLONG:
                case -ENOENT:
                case -ENOEXEC:
                        /* Disabled or missing; that's OK. */