Protect gateway from format-string crashes in data
authorDan Wells <dbw2@calvin.edu>
Tue, 6 Mar 2012 20:08:33 +0000 (15:08 -0500)
committerDan Scott <dscott@laurentian.ca>
Sat, 10 Mar 2012 04:24:33 +0000 (23:24 -0500)
commit974d3a0dd4ddd134033b16bcd9e2fde34302ffd5
treecd17af861e124c7f036ea3019d0cb74e5e683f88
parentfd92a859e2ba3eeeaafe4904cd04973eb8cd572b
Protect gateway from format-string crashes in data

As a common security measure, printf-style formatting codes are
not allowed to be directly interpreted from a writable segment.
The gateway code currently has the following function call:

osrfLogActivity( OSRF_LOG_MARK, act->buf );

This is a variadic function which expects the 'act->buf' position
to contain a format string and any trailing arguments to be the
values passed to the formatter.  Since act->buf is the value of
what we passed in, some data inadvertantly contains format strings,
and since it is a writable segment, the program crashes.  Here is
an example of a crash-causing call:

http://localhost/osrf-gateway-v1?service=test&method=test&param=%22%251n%22

The param is interpreted as "%1n" and abruptly fails.

The simple solution is to include a formatter so that our param gets
demoted to being mere data, i.e.:

osrfLogActivity( OSRF_LOG_MARK, "%s", act->buf );

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Dan Scott <dscott@laurentian.ca>
src/gateway/osrf_json_gateway.c