diff options
author | Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> | 2009-02-06 10:29:05 -0500 |
---|---|---|
committer | Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> | 2009-02-06 10:29:05 -0500 |
commit | f823083eee6bb3bf4c52cc2b32b1617bf291b1c0 (patch) | |
tree | 01a8a8924c2c03d10d9ffb52a4b1f6a912935e29 /src/socket.c | |
parent | 940c63996183bd7d609d2bce50123d5a9f92686c (diff) | |
parent | 98b6b4105b60150c5bf9d022b2e7de698a62a797 (diff) | |
download | screen-f823083eee6bb3bf4c52cc2b32b1617bf291b1c0.tar.gz |
Merge branch 'master' into cmd-alias
Diffstat (limited to 'src/socket.c')
-rw-r--r-- | src/socket.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/socket.c b/src/socket.c index 94a0342..48e8ad9 100644 --- a/src/socket.c +++ b/src/socket.c @@ -1563,8 +1563,10 @@ struct msg *mp; { char *args[MAXARGS]; int argl[MAXARGS]; - int n, *lp; - register char **pp = args, *p = mp->m.command.cmd; + char fullcmd[MAXSTR]; + register char *fc; + int n; + register char *p = mp->m.command.cmd; struct acluser *user; #ifdef MULTIUSER extern struct acluser *EffectiveAclUser; /* acls.c */ @@ -1572,17 +1574,21 @@ struct msg *mp; extern struct acluser *users; /* acls.c */ #endif - lp = argl; n = mp->m.command.nargs; if (n > MAXARGS - 1) n = MAXARGS - 1; - for (; n > 0; n--) + for (fc = fullcmd; n > 0; n--) { - *pp++ = p; - *lp = strlen(p); - p += *lp++ + 1; + int len = strlen(p); + strncpy(fc, p, fullcmd + sizeof(fullcmd) - fc - 1); + p += len + 1; + fc += len; + *fc++ = ' '; } - *pp = 0; + if (fc != fullcmd) + *--fc = 0; + if (Parse(fullcmd, fc - fullcmd, args, argl) <= 0) + return; #ifdef MULTIUSER user = *FindUserPtr(mp->m.attach.auser); if (user == 0) |