Hello Brian, all,

| r12094 | brbarret | 2006-10-11 20:40:21 +0200 (Wed, 11 Oct 2006) | 11 lines
| Changed paths:
|    M /trunk/opal/util/output.c
| 
| Use write() instead of fprintf() for output to stdout / stderr.  Fixes an 
issue
| I was running into where if a string in the argument list contains a printf
| escape sequence, we would segfault.  In particular, I was using opal_output
| to print the environment and had something like:
| 
|   LESSOPEN=|/usr/bin/lesspipe.sh %s
| 
| in my environment.  So I called opal_output(0, "%s", environ[i]) and
| got a segfault because the fprintf tried to expand the %s in the
| environment variable

This looks weird to me.  Unless that function is the only one producing
output on stdout/stderr (or all of them do a flush after each output, or
you also flush before each output -- yuck), I think things may be
reordered.  Why not just use fputs instead to avoid the format string
vulnerability?

Cheers,
Ralf

Reply via email to