1234567891011121314151617181920212223242526272829303132333435 |
- /* 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;
- }
|