commit - ae6f257a8d22174cb2326cd60d690cceea59fa8e
commit + bcdb46a77ed7b4ff4d9e7ca8fae79fec74b504ae
blob - e13036d70273f0b68f3d8b52fb1aa961de7e7703
blob + bb9d9fac4523bf681bf7556b71c3718ea521e992
--- kamid/client.c
+++ kamid/client.c
goto mismatch;
}
+ if (len != 0)
+ goto err;
+
if ((dot = strchr(version, '.')) != NULL)
*dot = '\0';
return;
}
+ if (len != 0)
+ goto err;
+
if (fid_by_id(fid) != NULL || afid != NOFID) {
np_error(hdr->tag, "invalid fid or afid");
return;
uint32_t fid;
/* fid[4] */
- if (!NPREAD32("fid", &fid, &data, &len)) {
+ if (!NPREAD32("fid", &fid, &data, &len) ||
+ len != 0) {
client_send_listener(IMSG_CLOSE, NULL, 0);
client_shutdown();
return;
oldfd = fd;
}
+ if (len != 0)
+ goto err;
+
/*
* If fd is -1 we've reached a file, otherwise we've just
* reached another directory. We must pay attention to what
/* fid[4] mode[1] */
if (!NPREAD32("fid", &fid, &data, &len) ||
- !NPREAD8("mode", &mode, &data, &len)) {
+ !NPREAD8("mode", &mode, &data, &len) ||
+ len != 0) {
client_send_listener(IMSG_CLOSE, NULL, 0);
client_shutdown();
return;
return;
}
if (!NPREAD32("perm", &perm, &data, &len) ||
- !NPREAD8("mode", &mode, &data, &len))
+ !NPREAD8("mode", &mode, &data, &len) ||
+ len != 0)
goto err;
if (!strcmp(name, ".") || !strcmp(name, "..") ||
/* fid[4] offset[8] count[4] */
if (!NPREAD32("fid", &fid, &data, &len) ||
!NPREAD64("offset", &off, &data, &len) ||
- !NPREAD32("count", &count, &data, &len)) {
+ !NPREAD32("count", &count, &data, &len) ||
+ len != 0) {
client_send_listener(IMSG_CLOSE, NULL, 0);
client_shutdown();
return;
uint32_t fid;
/* fid[4] */
- if (!NPREAD32("fid", &fid, &data, &len)) {
+ if (!NPREAD32("fid", &fid, &data, &len) ||
+ len != 0) {
client_send_listener(IMSG_CLOSE, NULL, 0);
client_shutdown();
return;
return;
}
+ if (len != 0)
+ goto err;
+
if ((f = fid_by_id(fid)) == NULL) {
np_error(hdr->tag, "invalid fid");
return;
char dirpath[PATH_MAX + 3];
/* fid[4] */
- if (!NPREAD32("fid", &fid, &data, &len)) {
+ if (!NPREAD32("fid", &fid, &data, &len) ||
+ len != 0) {
client_send_listener(IMSG_CLOSE, NULL, 0);
client_shutdown();
return;