prevent possible segfault in proc_args
This commit is contained in:
		
							parent
							
								
									0bf91e99ad
								
							
						
					
					
						commit
						e554a35a0e
					
				@ -791,7 +791,7 @@ static int ucb_ps_args_get(sigar_t *sigar, sigar_pid_t pid,
 | 
				
			|||||||
                           sigar_proc_args_t *procargs,
 | 
					                           sigar_proc_args_t *procargs,
 | 
				
			||||||
                           int timestamp)
 | 
					                           int timestamp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    char buffer[9086], *args, *arg;
 | 
					    char buffer[9086], *args=NULL, *arg;
 | 
				
			||||||
    sigar_cache_entry_t *ent;
 | 
					    sigar_cache_entry_t *ent;
 | 
				
			||||||
    FILE *fp;
 | 
					    FILE *fp;
 | 
				
			||||||
    pargs_t *pargs;
 | 
					    pargs_t *pargs;
 | 
				
			||||||
@ -838,13 +838,19 @@ static int ucb_ps_args_get(sigar_t *sigar, sigar_pid_t pid,
 | 
				
			|||||||
            args = sigar_skip_multiple_token(args, 4);
 | 
					            args = sigar_skip_multiple_token(args, 4);
 | 
				
			||||||
            SIGAR_SKIP_SPACE(args);
 | 
					            SIGAR_SKIP_SPACE(args);
 | 
				
			||||||
            len = strlen(args);
 | 
					            len = strlen(args);
 | 
				
			||||||
            args[len-1] = '\0'; /* chop \n */
 | 
					            if (len > 0) {
 | 
				
			||||||
 | 
					                args[len-1] = '\0'; /* chop \n */
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            pargs->args = malloc(len+1);
 | 
					            pargs->args = malloc(len+1);
 | 
				
			||||||
            memcpy(pargs->args, args, len);
 | 
					            memcpy(pargs->args, args, len);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pclose(fp);
 | 
					        pclose(fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!args) {
 | 
				
			||||||
 | 
					            return ESRCH;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sigar_proc_args_create(procargs);
 | 
					    sigar_proc_args_create(procargs);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user