mirror of
https://github.com/radareorg/radare2.git
synced 2025-01-25 23:34:57 +00:00
Fix segfault in ms with blank line (#18369)
This commit is contained in:
parent
a1c6423238
commit
4c8f20309d
@ -59,33 +59,19 @@ R_API int r_fs_shell_prompt(RFSShell* shell, RFS* fs, const char* root) {
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
snprintf (prompt, sizeof (prompt), "[%.*s]> ", (int)sizeof (prompt) - 5, path);
|
snprintf (prompt, sizeof (prompt), "[%.*s]> ", (int)sizeof (prompt) - 5, path);
|
||||||
if (shell) {
|
if (shell) {
|
||||||
|
free (*shell->cwd);
|
||||||
*shell->cwd = strdup (path);
|
*shell->cwd = strdup (path);
|
||||||
if (shell->set_prompt) {
|
if (shell->set_prompt) {
|
||||||
shell->set_prompt (prompt);
|
shell->set_prompt (prompt);
|
||||||
}
|
}
|
||||||
if (shell->readline) {
|
if (shell->readline) {
|
||||||
ptr = shell->readline ();
|
if ((ptr = shell->readline ()) == NULL) {
|
||||||
} else {
|
|
||||||
if (!fgets (buf, sizeof (buf), stdin)) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (feof (stdin)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
r_str_trim_tail (buf);
|
|
||||||
ptr = buf;
|
|
||||||
}
|
|
||||||
if (!ptr) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
r_str_trim ((char *)ptr); // XXX abadidea
|
|
||||||
if (shell->hist_add) {
|
|
||||||
shell->hist_add (ptr);
|
|
||||||
}
|
|
||||||
if (ptr != buf) {
|
|
||||||
r_str_ncpy (buf, ptr, sizeof (buf) - 1);
|
r_str_ncpy (buf, ptr, sizeof (buf) - 1);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
if (!shell || !shell->readline) {
|
||||||
printf ("%s", prompt);
|
printf ("%s", prompt);
|
||||||
if (!fgets (buf, sizeof (buf), stdin)) {
|
if (!fgets (buf, sizeof (buf), stdin)) {
|
||||||
break;
|
break;
|
||||||
@ -93,8 +79,13 @@ R_API int r_fs_shell_prompt(RFSShell* shell, RFS* fs, const char* root) {
|
|||||||
if (feof (stdin)) {
|
if (feof (stdin)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
r_str_trim_tail (buf);
|
|
||||||
}
|
}
|
||||||
|
r_str_trim (buf);
|
||||||
|
|
||||||
|
if (shell && shell->hist_add) {
|
||||||
|
shell->hist_add (buf);
|
||||||
|
}
|
||||||
|
|
||||||
char *wave = strchr (buf, '~');
|
char *wave = strchr (buf, '~');
|
||||||
if (wave) {
|
if (wave) {
|
||||||
*wave++ = 0;
|
*wave++ = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user