On 02/11/2010 02:20 PM, Jiri Denemark wrote:
>> +char *
>> +virConnectBaselineCPU(virConnectPtr conn,
>> + const char **xmlCPUs,
>> + unsigned int ncpus,
>> + unsigned int flags)
>> +{
>> + unsigned int i;
>> +
>> + VIR_DEBUG("conn=%p, xmlCPUs=%p, ncpus=%u, flags=%u",
>> + conn, xmlCPUs, ncpus, flags);
>> + if (xmlCPUs) {
>> + for (i = 0; i < ncpus; i++)
>> + VIR_DEBUG("xmlCPUs[%u]=%s", i, xmlCPUs[i]);
>
> Hum ... what if xmlCPUs[i] == NULL ... we should not crash there
> maybe this should be tested and that loop being done after
> VIR_IS_CONNECT(conn) check and xmlCPUs == NULL check
I think it's better to keep it just after the first debug print as the purpose
of this loop is to print detailed data about arguments passed to
virConnectBaselineCPU(). However, we shouldn't really crash there. I think
xmlCPUs[i] ? xmlCPUs[i] : "(null)"
Well, in Linux, printf("%s", NULL) is generally safe (it prints
"(null").
However, that is not portable, so there is a wrapper or something in the
libvirt code that does "safe" printing of NULL pointers. I can't quite
remember exactly what it's called, but take a look around.
--
Chris Lalancette