2004-09-17 Paul Jakma <paul@dishone.st>

* vtysh.c: (vtysh_client_execute) fix the sync fix. The 4th and
	  final sync byte is not ASCII NULL, it's actually a status integer,
	  and only ASCII NULL if CMD_SUCCESS is returned by daemon.
	  Fix pointed out by Hasso.
This commit is contained in:
paul 2004-10-11 18:21:55 +00:00
parent c8a440eca0
commit 0921d48e8e
2 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2004-09-17 Paul Jakma <paul@dishone.st>
* vtysh.c: (vtysh_client_execute) fix the sync fix. The 4th and
final sync byte is not ASCII NULL, it's actually a status integer,
and only ASCII NULL if CMD_SUCCESS is returned by daemon.
Fix pointed out by Hasso.
2004-10-11 Hasso Tepper <hasso at quagga.net>
* vtysh.c, vtysh_user.c: Make more strings const.

View File

@ -195,7 +195,10 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
fprintf (fp, "%s", buf);
fflush (fp);
/* check for trailling \0\0\0\0, even if split across reads */
/* check for trailling \0\0\0<ret code>,
* even if split across reads
* (see lib/vty.c::vtysh_read)
*/
if (nbytes >= 4)
{
i = nbytes-4;
@ -204,7 +207,7 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
else
i = 0;
while (i < nbytes)
while (i < nbytes && numnulls < 3)
{
if (buf[i++] == '\0')
numnulls++;
@ -217,10 +220,10 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
/* got 3 or more trailling nulls? */
if (numnulls >= 3)
return CMD_SUCCESS;
return (buf[nbytes-1]);
}
}
return ret;
assert (1);
}
void