]> granicus.if.org Git - php/commitdiff
Eliminate strcat() usage.
authorIlia Alshanetsky <iliaa@php.net>
Mon, 19 Feb 2007 23:53:00 +0000 (23:53 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 19 Feb 2007 23:53:00 +0000 (23:53 +0000)
ext/session/mod_mm.c

index bdc2651b064f0cd395b14ee577af2099ecc68149..24e263a150e3b9607e599f8be62c8d407c3607e7 100644 (file)
@@ -253,28 +253,34 @@ PHP_MINIT_FUNCTION(ps_mm)
 {
        int save_path_len = strlen(PS(save_path));
        int mod_name_len = strlen(sapi_module.name);
+       int euid_len;
        char *ps_mm_path, euid[30];
        int ret;
 
        ps_mm_instance = calloc(sizeof(*ps_mm_instance), 1);
-       if (!ps_mm_instance)
+       if (!ps_mm_instance) {
                return FAILURE;
+       }
 
-       if (!sprintf(euid,"%d", geteuid())) 
+       if (!(euid_len = sprintf(euid,"%d", geteuid()))) {
                return FAILURE;
+       }
                
-    /* Directory + '/' + File + Module Name + Effective UID + \0 */    
-       ps_mm_path = emalloc(save_path_len+1+sizeof(PS_MM_FILE)+mod_name_len+strlen(euid)+1);
+       /* Directory + '/' + File + Module Name + Effective UID + \0 */ 
+       ps_mm_path = emalloc(save_path_len + 1 + (sizeof(PS_MM_FILE) - 1) + mod_name_len + euid_len + 1);
        
-       memcpy(ps_mm_path, PS(save_path), save_path_len + 1);
-       if (save_path_len > 0 && ps_mm_path[save_path_len - 1] != DEFAULT_SLASH) {
+       memcpy(ps_mm_path, PS(save_path), save_path_len);
+       if (PS(save_path)[save_path_len - 1] != DEFAULT_SLASH) {
                ps_mm_path[save_path_len] = DEFAULT_SLASH;
-               ps_mm_path[save_path_len+1] = '\0';
+               save_path_len++;
        }
-       strcat(ps_mm_path, PS_MM_FILE);
-       strcat(ps_mm_path, sapi_module.name);
-       strcat(ps_mm_path, euid);
-       
+       mempcy(ps_mm_path + save_path_len, PS_MM_FILE, sizeof(PS_MM_FILE) - 1);
+       save_path_len += sizeof(PS_MM_FILE) - 1;
+       memcpy(ps_mm_path + save_path_len, sapi_module.name, mod_name_len);
+       save_path_len += mod_name_len;
+       memcpy(ps_mm_path + save_path_len, euid, euid_len);
+       ps_mm_path[save_path_len + euid_len] = '\0';
+
        ret = ps_mm_initialize(ps_mm_instance, ps_mm_path);
                
        efree(ps_mm_path);