On Sat, Jun 28, 2014 at 02:03:15PM -0700, Ansis Atteka wrote:
> From: Ansis <ansisatt...@gmail.com>
> 
> Commit 8a9562 ("dpif-netdev: Add DPDK netdev.") reversed sequence
> in which set_program_name() and proctitle_init() functions are
> called.  This introduced a regression where program_name and argv_start
> would point to exactly the same memory (previously both of these
> pointers were pointing to different memory locations because
> proctitle_init() would have beforehand created a copy of argv[0]
> for the set_program_name() call).
> 
> This regression on my system caused ovs-vswitchd monitoring process to
> show up without process name:
> 
> ...  00:00:00 : monitoring pid 26308 (healthy)
> 
> Ps output was lacking process name because following code was
> using overlapping memory for source and target buffer:.
> 
> proctitle_set(const char *format, ...)
> {
>     ...
>     n = snprintf(argv_start, argv_size, "%s: ", program_name);
> 
> Overall C99 and POSIX standards state that behavior is undefined
> if source and target buffers overlap.
> 
> Signed-off-by: Ansis Atteka <aatt...@nicira.com>

I like this regardless of the bug fix because it makes behavior more
consistent on Windows and Unix (program_name is now malloc'd in both
cases).

I would remove the 'if (program_name)' test around the free call,
since free(NULL) is a no-op anyway.

Acked-by: Ben Pfaff <b...@nicira.com>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to