Validate Uid+Gid fields exist in proc_cred_get
This commit is contained in:
		
							parent
							
								
									585d510fb4
								
							
						
					
					
						commit
						3ff8a2666d
					
				@ -826,6 +826,8 @@ int sigar_proc_mem_get(sigar_t *sigar, sigar_pid_t pid,
 | 
				
			|||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NO_ID_MSG "[proc_cred] /proc/%lu" PROC_PSTATUS " missing "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
 | 
					int sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
 | 
				
			||||||
                        sigar_proc_cred_t *proccred)
 | 
					                        sigar_proc_cred_t *proccred)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -836,17 +838,29 @@ int sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
 | 
				
			|||||||
        return status;
 | 
					        return status;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ptr = strstr(buffer, "\nUid:");
 | 
					    if ((ptr = strstr(buffer, "\nUid:"))) {
 | 
				
			||||||
    ptr = sigar_skip_token(ptr);
 | 
					        ptr = sigar_skip_token(ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    proccred->uid  = sigar_strtoul(ptr);
 | 
					        proccred->uid  = sigar_strtoul(ptr);
 | 
				
			||||||
    proccred->euid = sigar_strtoul(ptr);
 | 
					        proccred->euid = sigar_strtoul(ptr);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        sigar_log_printf(sigar, SIGAR_LOG_WARN,
 | 
				
			||||||
 | 
					                         NO_ID_MSG "Uid", pid);
 | 
				
			||||||
 | 
					        return ENOENT;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ptr = strstr(ptr, "\nGid:");
 | 
					    if ((ptr = strstr(ptr, "\nGid:"))) {
 | 
				
			||||||
    ptr = sigar_skip_token(ptr);
 | 
					        ptr = sigar_skip_token(ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    proccred->gid  = sigar_strtoul(ptr);
 | 
					        proccred->gid  = sigar_strtoul(ptr);
 | 
				
			||||||
    proccred->egid = sigar_strtoul(ptr);
 | 
					        proccred->egid = sigar_strtoul(ptr);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        sigar_log_printf(sigar, SIGAR_LOG_WARN,
 | 
				
			||||||
 | 
					                         NO_ID_MSG "Gid", pid);
 | 
				
			||||||
 | 
					        return ENOENT;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user