Code Review
/
src
/
app-framework-binder.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
fix include of afb-service-v1.h
[src/app-framework-binder.git]
/
src
/
afb-cred.c
diff --git
a/src/afb-cred.c
b/src/afb-cred.c
index
8a77700
..
763c926
100644
(file)
--- a/
src/afb-cred.c
+++ b/
src/afb-cred.c
@@
-34,9
+34,18
@@
static struct afb_cred *current;
static struct afb_cred *mkcred(uid_t uid, gid_t gid, pid_t pid, const char *label, size_t size)
{
struct afb_cred *cred;
static struct afb_cred *mkcred(uid_t uid, gid_t gid, pid_t pid, const char *label, size_t size)
{
struct afb_cred *cred;
- char *dest;
-
- cred = malloc(1 + size + sizeof *cred);
+ char *dest, user[64];
+ size_t i;
+ uid_t u;
+
+ i = 0;
+ u = uid;
+ do {
+ user[i++] = (char)('0' + u % 10);
+ u = u / 10;
+ } while(u && i < sizeof user);
+
+ cred = malloc(2 + i + size + sizeof *cred);
if (!cred)
errno = ENOMEM;
else {
if (!cred)
errno = ENOMEM;
else {
@@
-45,12
+54,16
@@
static struct afb_cred *mkcred(uid_t uid, gid_t gid, pid_t pid, const char *labe
cred->gid = gid;
cred->pid = pid;
dest = (char*)(&cred[1]);
cred->gid = gid;
cred->pid = pid;
dest = (char*)(&cred[1]);
- memcpy(dest, label, size);
- dest[size] = 0;
+ cred->user = dest;
+ while(i)
+ *dest++ = user[--i];
+ *dest++ = 0;
cred->label = dest;
cred->id = dest;
cred->label = dest;
cred->id = dest;
+ memcpy(dest, label, size);
+ dest[size] = 0;
dest = strrchr(dest, ':');
dest = strrchr(dest, ':');
- if (dest
&& dest[1]
)
+ if (dest)
cred->id = &dest[1];
}
return cred;
cred->id = &dest[1];
}
return cred;