]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
don't use dirname() or basename(). They are NOT safe.
authorAlan T. DeKok <aland@freeradius.org>
Wed, 6 Nov 2019 12:44:42 +0000 (07:44 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 6 Nov 2019 12:44:42 +0000 (07:44 -0500)
src/bin/unit_test_attribute.c

index 56d012ea11b4dab9988958089c8438b68adfe765..d79f6762e401c8d0f40395aea74eccac8a55385e 100644 (file)
@@ -2328,7 +2328,19 @@ int main(int argc, char *argv[])
                int i;
 
                for (i = 1; i < argc; i++) {
-                       ret = process_file(&exit_now, autofree, features, dict, dirname(argv[i]), basename(argv[i]));
+                       char *dir, *file;
+                       char *p = strrchr(argv[i], '/');
+
+                       if (p) {
+                               *p = '\0'; /* we are allowed to modify our arguments.  No one cares. */
+                               dir = argv[i];
+                               file = p + 1;
+                       } else {
+                               dir = NULL;
+                               file = argv[i];
+                       }
+
+                       ret = process_file(&exit_now, autofree, features, dict, dir, file);
                        if ((ret != 0) || exit_now) break;
                }
        }