yellowman / nsh

OpenBSD networking configuration shell
http://www.nmedia.net/nsh/
Other
175 stars 27 forks source link

ensure makeargv() produced some arguments before dereferencing margv[0] #45

Closed stspdotname closed 1 year ago

stspdotname commented 1 year ago

Otherwise tab-completion can crash in strncmp() as follows:

nsh.my.domain(p)/ s sasync show smtp snmp ssh sshd nsh.my.domain(p)/ Program received signal SIGSEGV, Segmentation fault. _libc_strncmp (s1=Variable "s1" is not available. ) at /usr/src/lib/libc/string/strncmp.c:41 41 /usr/src/lib/libc/string/strncmp.c: No such file or directory. in /usr/src/lib/libc/string/strncmp.c Current language: auto; currently minimal (gdb) up at /home/stsp/src/nsh/complete.c:317 317 && strncmp(word, margv[cursor_argc], cursor_argo) == 0) (gdb) p word $1 = 0x9cccb3f9230 "s" (gdb) p margv $2 = 0x9cccb3f6c90 (gdb) p margv[0] $3 = 0x0 (gdb) p cursor_argc $4 = 0 (gdb) p cursor_argo $5 = 1 (gdb) p line $6 = 0x9cccb3f7ca0 " "