summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-12-04 10:52:42 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2012-12-04 10:52:42 +0100
commitb296b96c688a4297047e5dec33d411ed6366b6c3 (patch)
tree7bbaaf2c5d9e8c41e3130eb7fe5c07e038b0a9f6
parentb142e2a30883e78c3c7ae40762a607cef1dd40b9 (diff)
downloadplan9front-b296b96c688a4297047e5dec33d411ed6366b6c3.tar.xz
devssl: handle bad secretin/secretout ctl arguments (import from sources)
-rw-r--r--sys/src/9/port/devssl.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/src/9/port/devssl.c b/sys/src/9/port/devssl.c
index 249003ca3..52c0c2309 100644
--- a/sys/src/9/port/devssl.c
+++ b/sys/src/9/port/devssl.c
@@ -1186,12 +1186,20 @@ sslwrite(Chan *c, void *a, long n, vlong)
m = (strlen(p)*3)/2;
x = smalloc(m);
t = dec64(x, m, p, strlen(p));
+ if(t <= 0){
+ free(x);
+ error(Ebadarg);
+ }
setsecret(&s->in, x, t);
free(x);
} else if(strcmp(buf, "secretout") == 0 && p != 0) {
m = (strlen(p)*3)/2 + 1;
x = smalloc(m);
t = dec64(x, m, p, strlen(p));
+ if(t <= 0){
+ free(x);
+ error(Ebadarg);
+ }
setsecret(&s->out, x, t);
free(x);
} else