diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2015-12-24 00:32:54 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-12-24 00:32:54 +0100 |
commit | 3b8372c1f2ce6546da1d71de2254c18482430e36 (patch) | |
tree | 9748451aad395fdb9777145adf42fee5b1f51414 | |
parent | 62fe4404a70c7765973141e8921b06a03b7c1c79 (diff) | |
download | cygnal-3b8372c1f2ce6546da1d71de2254c18482430e36.tar.gz cygnal-3b8372c1f2ce6546da1d71de2254c18482430e36.tar.bz2 cygnal-3b8372c1f2ce6546da1d71de2254c18482430e36.zip |
Use TLS buffer in ACL<->text conversion
* sec_acl.cc (acltotext32): Use tmp_pathbuf rather than stack buffer.
(aclfromtext32): Ditto.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/sec_acl.cc | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 5f9eacffc..c32519efe 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,10 @@ 2015-12-24 Corinna Vinschen <corinna@vinschen.de> + * sec_acl.cc (acltotext32): Use tmp_pathbuf rather than stack buffer. + (aclfromtext32): Ditto. + +2015-12-24 Corinna Vinschen <corinna@vinschen.de> + * sec_acl.cc: Cosmetic changes. 2015-12-18 Corinna Vinschen <corinna@vinschen.de> diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc index dd75e3223..348f0bc6c 100644 --- a/winsup/cygwin/sec_acl.cc +++ b/winsup/cygwin/sec_acl.cc @@ -1432,7 +1432,8 @@ acltotext32 (aclent_t *aclbufp, int aclcnt) set_errno (EINVAL); return NULL; } - char buf[32000]; + tmp_pathbuf tp; + char *buf = tp.c_get (); buf[0] = '\0'; bool first = true; @@ -1502,16 +1503,17 @@ permfromstr (char *perm) extern "C" aclent_t * aclfromtext32 (char *acltextp, int *) { - if (!acltextp) + if (!acltextp || strlen (acltextp) > NT_MAX_PATH) { set_errno (EINVAL); return NULL; } - char buf[strlen (acltextp) + 1]; + tmp_pathbuf tp; aclent_t lacl[MAX_ACL_ENTRIES]; memset (lacl, 0, sizeof lacl); int pos = 0; - strcpy (buf, acltextp); + char *buf = tp.t_get (); + stpcpy (buf, acltextp); char *lasts; cyg_ldap cldap; for (char *c = strtok_r (buf, ",", &lasts); |