
On Fri, Jan 07, 2022 at 06:04:04PM +0530, Ani Sinha wrote:
On Fri, 7 Jan 2022, Daniel P. Berrangé wrote:
On Fri, Jan 07, 2022 at 05:24:18PM +0530, Ani Sinha wrote:
On Fri, 7 Jan 2022, Ján Tomko wrote:
On a Friday in 2022, Ani Sinha wrote:
On Fri, 7 Jan 2022, Michal Prívozník wrote:
I don't think so. Just like we've discussed under one patch of yours, a function should either report error in all cases or none. And in case of virProcessGetSchedInfo() the linux version does report error
I see your point but there is also a bug in that function - not all error paths report errors. For example, !proc and !lines cases. We need to fix that.
I don't see a !proc error path in virProcessGetSchedInfo.
if (tid) proc = g_strdup_printf("/proc/%d/task/%d/sched", (int) pid, (int) tid); else proc = g_strdup_printf("/proc/%d/sched", (int) pid); if (!proc) return -1; <=== not reported
g_strdup_printf can't fail unless we mangled the printf format string (which we havent), so that 'if (!proc)' check is redundant / unreachable
I am ok with Michal's patch that removes this check. However, such assumptutions does makes me nervous. Since we do not really have control over the library that implements g_strdup_printf, what if the "can't fail" logic changes one day? This can happen deliberately or due to some bug in the library. Does it not make sense to be defensive as the consumer of this function and write code that is future proof?
Their API spec guarantees we are safe https://docs.gtk.org/glib/func.strdup_printf.html "The returned string is guaranteed to be non-NULL, unless format contains %lc or %ls conversions, which can fail if no multibyte representation is available for the given character." Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|