procps/proc
Jim Warner 09503dc597 library: eliminated a final potential NULL, <PIDS> api
In that reference below a specific systemd problem was
fixed in the commit shown. However lurking deep within
the <pids> interface was yet one final case where NULL
could be returned, involving 'strv' and the following:

. a user requested both a single string vector (always
returned as a normal string) & the vectorized version,
as with PROCPS_PIDS_CMDLINE and PROCPS_PIDS_CMDLINE_V.

. a user simply duplicated some vectorized enum items.

The root of that NULL problem is the fact those single
string vectors shared the same proc_t field with their
true vectorized version. So while multiple occurrences
for most strings could be satisfied with strdup versus
the normal ownership usurpation, those true vectorized
fields could not be quite so easily copied/duplicated.

Thus newlib chose to return a NULL result.strv pointer
under either of the above scenarios (which perhaps was
just a user boo-boo in the first place). In any event,
the NULL was a potential for true string vectors only.

Now, since newlib is the sole caller into the readproc
module, separate fields have been created for what are
just normal strings (never vectorized) and those which
remain the true vectorized versions. And, former flags
which only worked if combined, now act as stand alone.

Thus, both PROCPS_PIDS_CMDLINE & PROCPS_PIDS_CMDLINE_V
can be used simultaneously (as they should have been).

Also with this patch, items which a user duplicates in
the stack (beyond the first such item) will return the
the string "[ duplicate ENUM_ID ]". This practice will
apply to both single strings and true vectorized ones.
In addition to informing users of their error, it will
also mean potential NULLs need now never be a concern.

Reference(s);
http://www.freelists.org/post/procps/systemd-binary-vs-library
commit 0580a7b4c6

Signed-off-by: Jim Warner <james.warner@comcast.net>
2016-05-22 21:59:18 +10:00
..
.gitignore tests: update template and add pids 2016-04-19 21:33:02 +10:00
alloc.c library: cleanup of library includes 2016-04-16 17:03:57 +10:00
alloc.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
COPYING miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
devname.c library: Remove tty_to_dev() 2015-09-01 20:41:25 +10:00
devname.h library: cleanup of readproc functions 2016-04-17 14:14:27 +10:00
diskstat.c misc: Few more resource leak fixes 2016-05-03 21:58:13 +10:00
diskstat.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
escape.c library: re-arrange escape commands 2016-04-17 14:45:19 +10:00
escape.h library: re-arrange escape commands 2016-04-17 14:45:19 +10:00
libprocps.pc.in Renaming libprocfs to libprocps 2011-12-23 09:18:43 +11:00
libprocps.sym library: standardize portions of interface, <PIDS> api 2016-05-16 19:58:20 +10:00
meminfo.c library: remove the ull_int result type, <MEMINFO> api 2016-05-12 21:15:01 +10:00
meminfo.h library: remove the ull_int result type, <MEMINFO> api 2016-05-12 21:15:01 +10:00
namespace.c miscellaneous: silence a whole bunch of clang warnings 2015-09-21 22:34:27 +10:00
namespace.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
openproc.3 documentation: fix man pages due to refactor for wchan 2015-06-19 19:09:21 +10:00
pids.c library: eliminated a final potential NULL, <PIDS> api 2016-05-22 21:59:18 +10:00
pids.h library: try different alignment for types, <PIDS> api 2016-05-16 19:58:20 +10:00
procps-private.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
procps.h library: rename those readstat.c & h sources to 'stat' 2016-04-26 22:27:16 +10:00
pwcache.c library: export pwcache functions correctly 2015-06-26 22:37:53 +10:00
pwcache.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
readproc.3 misc: result after checking all files for misspellings 2014-08-08 22:14:21 +02:00
readproc.c library: eliminated a final potential NULL, <PIDS> api 2016-05-22 21:59:18 +10:00
readproc.h library: eliminated a final potential NULL, <PIDS> api 2016-05-22 21:59:18 +10:00
readproctab.3 misc: result after checking all files for misspellings 2014-08-08 22:14:21 +02:00
slab.c library: slab sort derefence after check 2016-05-14 22:32:35 +10:00
slab.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
stat.c library: allow negative delta values for 2, <STAT> api 2016-05-12 21:13:47 +10:00
stat.h library; add more of my gratuitous changes, <STAT> api 2016-05-12 07:51:10 +10:00
sysinfo.c library: correct the procps_pid_length() +1 distortion 2016-04-18 19:29:41 +10:00
sysinfo.h library: remove an obsolete 'jiffs' typedef in sysinfo 2016-05-08 21:12:22 +10:00
test_namespace.c tests: update template and add pids 2016-04-19 21:33:02 +10:00
test_pids.c tests: update template and add pids 2016-04-19 21:33:02 +10:00
test_sysinfo.c tests: update template and add pids 2016-04-19 21:33:02 +10:00
test_uptime.c library: procps_uptime() return value is a status 2016-05-01 16:50:25 +10:00
test_version.c library: Fix LINUX_VERSION macro 2016-05-01 17:46:25 +10:00
uptime.c library: procps_uptime() return value is a status 2016-05-01 16:50:25 +10:00
uptime.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
version.c miscellaneous: remove some trailing whitespace buildup 2015-06-20 07:46:23 +10:00
version.h library: Fix LINUX_VERSION macro 2016-05-01 17:46:25 +10:00
vmstat.c library: vmstat redesign now using 'stack' vs. 'chain' 2015-07-23 22:31:44 +10:00
vmstat.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00
wchan.c library: refactor and rely on modern kernels for wchan 2015-06-19 19:09:20 +10:00
wchan.h library: cleanup of library includes 2016-04-16 17:03:57 +10:00