mirror of
				https://gitlab.com/libvirt/libvirt.git
				synced 2025-10-30 20:24:58 +03:00 
			
		
		
		
	Begin fixing uses of strtol: parse integers more carefully.
Patch from Jim Meyering * src/internal.h: Include <errno.h>. Define new static inline function, xstrtol_i. * src/virsh.c: Detect integer overflow in domain ID number in vshCommandOptDomainBy. Detect overflow and invalid port number suffix in cmdVNCDisplay. * src/xend_internal.c: Parse CPU number more carefully in xenDaemonDomainGetVcpus. * tests/int-overflow: New script. Test for the above-fixed bug. * tests/Makefile.am: Add int-overflow to TESTS. Define TESTS_ENVIRONMENT, to propagate $abs_top_* variables into the int-overflow script. Adapt the "valgrind" rule not to clobber new TESTS_ENVIRONMENT. Daniel
This commit is contained in:
		| @@ -3038,11 +3038,11 @@ xenDaemonDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, | ||||
|                         !strcmp(t->u.s.car->u.s.car->u.value, "cpumap") && | ||||
|                         (t->u.s.car->u.s.cdr->kind == SEXPR_CONS)) { | ||||
|                         for (t = t->u.s.car->u.s.cdr->u.s.car; t->kind == SEXPR_CONS; t = t->u.s.cdr) | ||||
|                             if (t->u.s.car->kind == SEXPR_VALUE) { | ||||
|                                 cpu = strtol(t->u.s.car->u.value, NULL, 0); | ||||
|                                 if (cpu >= 0 && (VIR_CPU_MAPLEN(cpu+1) <= maplen)) { | ||||
|                                     VIR_USE_CPU(cpumap, cpu); | ||||
|                                 } | ||||
|                             if (t->u.s.car->kind == SEXPR_VALUE | ||||
|                                 && xstrtol_i(t->u.s.car->u.value, NULL, 10, &cpu) == 0 | ||||
|                                 && cpu >= 0 | ||||
|                                 && (VIR_CPU_MAPLEN(cpu+1) <= maplen)) { | ||||
|                                 VIR_USE_CPU(cpumap, cpu); | ||||
|                             } | ||||
|                         break; | ||||
|                     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user