summaryrefslogtreecommitdiff
path: root/vtysh
diff options
context:
space:
mode:
authorajs <ajs>2004-11-11 14:03:39 +0000
committerajs <ajs>2004-11-11 14:03:39 +0000
commit85fb1e6dc3c133860d8404c3b233acade91acb05 (patch)
tree6c73f029567460d920c4ddabb30292c5838c8faa /vtysh
parent7966b97ce3ffd5c02d70ee352553a1fb099c52a9 (diff)
2004-11-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vtysh.c: (vtysh_client_execute) Fix flaws in detecting trailing '\0' chars and command return code.
Diffstat (limited to 'vtysh')
-rw-r--r--vtysh/ChangeLog5
-rw-r--r--vtysh/vtysh.c15
2 files changed, 12 insertions, 8 deletions
diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog
index ad7e7b2d..ea611179 100644
--- a/vtysh/ChangeLog
+++ b/vtysh/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * vtysh.c: (vtysh_client_execute) Fix flaws in detecting trailing
+ '\0' chars and command return code.
+
2004-10-28 Hasso Tepper <hasso at quagga.net>
* vtysh.c: "show running-daemons" broke users habits who are using
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index d3f672d3..c7271ff0 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -191,8 +191,11 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
if (nbytes > 0)
{
+ if ((numnulls == 3) && (nbytes == 1))
+ return buf[0];
+
buf[nbytes] = '\0';
- fprintf (fp, "%s", buf);
+ fputs (buf, fp);
fflush (fp);
/* check for trailling \0\0\0<ret code>,
@@ -212,18 +215,14 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
if (buf[i++] == '\0')
numnulls++;
else
- {
- numnulls = 0;
- break;
- }
+ numnulls = 0;
}
- /* got 3 or more trailling nulls? */
- if (numnulls >= 3)
+ /* got 3 or more trailing NULs? */
+ if ((numnulls >= 3) && (i < nbytes))
return (buf[nbytes-1]);
}
}
- assert (1);
}
void