basename(3) manual states if path is a null pointer or emtpy
string, a pointer to "." is returned. We shouldn't attempt
to modify it because its const.
---
basename.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/basename.c b/basename.c
index 94a2848..63e7b7b 100644
--- a/basename.c
+++ b/basename.c
@@ -15,6 +15,7 @@ int
main(int argc, char *argv[])
{
ssize_t off;
+ size_t slen;
char *p;
ARGBEGIN {
@@ -26,8 +27,8 @@ main(int argc, char *argv[])
usage();
p = basename(argv[0]);
- if (argc == 2) {
- off = strlen(p) - strlen(argv[1]);
+ if (argc == 2 && (slen = strlen(argv[1])) > 0) {
+ off = strlen(p) - slen;
if (off > 0 && !strcmp(p + off, argv[1]))
p[off] = '\0';
}
--
2.51.2