summaryrefslogtreecommitdiff
path: root/src/socket.c
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2009-02-06 10:29:05 -0500
committerSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2009-02-06 10:29:05 -0500
commitf823083eee6bb3bf4c52cc2b32b1617bf291b1c0 (patch)
tree01a8a8924c2c03d10d9ffb52a4b1f6a912935e29 /src/socket.c
parent940c63996183bd7d609d2bce50123d5a9f92686c (diff)
parent98b6b4105b60150c5bf9d022b2e7de698a62a797 (diff)
downloadscreen-f823083eee6bb3bf4c52cc2b32b1617bf291b1c0.tar.gz
Merge branch 'master' into cmd-alias
Diffstat (limited to 'src/socket.c')
-rw-r--r--src/socket.c22
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)