--- src/ctrls.c 2006/10/24 16:13:31 1.14
+++ src/ctrls.c 2006/12/12 16:34:43 1.15
@@ -534,11 +534,20 @@
return -1;
}
+ if (reqarglen >= sizeof(reqaction)) {
+ pr_signals_unblock();
+ errno = ENOMEM;
+ return -1;
+ }
+
+ memset(reqaction, '\0', sizeof(reqaction));
+
if (read(cl->cl_fd, reqaction, reqarglen) < 0) {
pr_signals_unblock();
return -1;
}
+ reqaction[sizeof(reqaction)-1] = '\0';
nreqargs--;
/* Find a matching action object, and use it to populate a ctrl object,
@@ -657,17 +666,16 @@
return -1;
}
- memset(response, '\0', sizeof(response));
-
/* Make sure resparglen is not too big */
- if (resparglen > sizeof(response)) {
+ if (resparglen >= sizeof(response)) {
pr_signals_unblock();
errno = ENOMEM;
return -1;
}
- bread = read(ctrls_sockfd, response, resparglen);
+ memset(response, '\0', sizeof(response));
+ bread = read(ctrls_sockfd, response, resparglen);
while (bread != resparglen) {
if (bread < 0) {
pr_signals_unblock();