From 786ce3b560eca0dee7b632c120210b8e4a9c4e7b Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 22 Dec 2011 16:50:01 -0500 Subject: [PATCH] core: Preemptively error out on paths longer than PATH_MAX Just noticed this while thinking like an attacker. --- src/libotutil/ot-unix-utils.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libotutil/ot-unix-utils.c b/src/libotutil/ot-unix-utils.c index e7357d76..f07facb3 100644 --- a/src/libotutil/ot-unix-utils.c +++ b/src/libotutil/ot-unix-utils.c @@ -132,6 +132,13 @@ ot_util_path_split_validate (const char *path, GPtrArray *ret_components = NULL; int i; + if (strlen (path) > PATH_MAX) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Path '%s' is too long", path); + goto out; + } + ret_components = ot_split_string_ptrarray (path, '/'); /* Canonicalize by removing '.' and '', throw an error on .. */