/* vi: set sw=4 ts=4: */ /* * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ #include "libbb.h" #include "bb_archive.h" const char* FAST_FUNC strip_unsafe_prefix(const char *str) { const char *cp = str; while (1) { char *cp2; if (*cp == '/') { cp++; continue; } if (is_prefixed_with(cp, "/../"+1)) { cp += 3; continue; } cp2 = strstr(cp, "/../"); if (!cp2) break; cp = cp2 + 4; } if (cp != str) { static smallint warned = 0; if (!warned) { warned = 1; bb_error_msg("removing leading '%.*s' from member names", (int)(cp - str), str); } } return cp; }