From 28305ac90db468f94177c07a6ffae5b81e53e4d9 Mon Sep 17 00:00:00 2001 From: Paolo 'Blaisorblade' Giarrusso Date: Thu, 22 Sep 2005 21:44:14 -0700 Subject: [PATCH] --- yaml --- r: 9243 b: refs/heads/master c: a8bfb94c58238666df0d6856861d18f0f52fc752 h: refs/heads/master i: 9241: b6a1dfca4f793d9d11fde137ed727a1e8d8f79c2 9239: 57302138c7576c3ae80ed9fb4feb05e30ff68ea2 v: v3 --- [refs] | 2 +- trunk/arch/um/include/user.h | 4 +++- trunk/arch/um/kernel/umid.c | 11 ++++------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 2b3ad6afaa34..62d1ee9d166b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3a02d6c051cf3c214aab38e4330b4bcec5f6e3f8 +refs/heads/master: a8bfb94c58238666df0d6856861d18f0f52fc752 diff --git a/trunk/arch/um/include/user.h b/trunk/arch/um/include/user.h index 57ee9e261228..0f865ef46918 100644 --- a/trunk/arch/um/include/user.h +++ b/trunk/arch/um/include/user.h @@ -14,7 +14,9 @@ extern void *um_kmalloc_atomic(int size); extern void kfree(void *ptr); extern int in_aton(char *str); extern int open_gdb_chan(void); -extern int strlcpy(char *, const char *, int); +/* These use size_t, however unsigned long is correct on both i386 and x86_64. */ +extern unsigned long strlcpy(char *, const char *, unsigned long); +extern unsigned long strlcat(char *, const char *, unsigned long); extern void *um_vmalloc(int size); extern void vfree(void *ptr); diff --git a/trunk/arch/um/kernel/umid.c b/trunk/arch/um/kernel/umid.c index 251d277fff2a..0b21d59ba0cd 100644 --- a/trunk/arch/um/kernel/umid.c +++ b/trunk/arch/um/kernel/umid.c @@ -237,16 +237,13 @@ static int __init make_uml_dir(void) strlcpy(dir, home, sizeof(dir)); uml_dir++; } + strlcat(dir, uml_dir, sizeof(dir)); len = strlen(dir); - strncat(dir, uml_dir, sizeof(dir) - len); - len = strlen(dir); - if((len > 0) && (len < sizeof(dir) - 1) && (dir[len - 1] != '/')){ - dir[len] = '/'; - dir[len + 1] = '\0'; - } + if (len > 0 && dir[len - 1] != '/') + strlcat(dir, "/", sizeof(dir)); uml_dir = malloc(strlen(dir) + 1); - if(uml_dir == NULL){ + if (uml_dir == NULL) { printf("make_uml_dir : malloc failed, errno = %d\n", errno); exit(1); }