Bob, what do you think about these remarks?

Best regards,
Per

On Wed, Jan 28, 2009 at 11:06 AM, Loïc Minier <l...@dooz.org> wrote:
> Package: micro-evtd
> Version: 3.3.3-6+lenny3
> Severity: important
> Tags: security
>
>        Hey,
>
>  I was reading the micro-evtd source, and found some slightly scary
>  issues; first with these warnings:
> micro_evtd.c: In function 'reset':
> micro_evtd.c:240: warning: ignoring return value of 'write', declared with 
> attribute warn_unused_result
> micro_evtd.c:244: warning: ignoring return value of 'read', declared with 
> attribute warn_unused_result
> micro_evtd.c: In function 'writeUART':
> micro_evtd.c:310: warning: ignoring return value of 'write', declared with 
> attribute warn_unused_result
> micro_evtd.c:316: warning: ignoring return value of 'write', declared with 
> attribute warn_unused_result
>
>  The read()/write() error checking is probably not a big issue in real
>  life, but it would probably be best to abort subsequent reads/writes
>  when one of them fails (except in reset() perhaps).
>
> micro_evtd.c: In function 'execute_command2':
> micro_evtd.c:416: warning: ignoring return value of 'system', declared with 
> attribute warn_unused_result
>
>  Not a big deal, but might be worth logging?
>
> micro_evtd.c: In function 'parse_configuration':
> micro_evtd.c:1028: warning: format not a string literal and no format 
> arguments
>
>  That's really trivial to fix by changing:
>    syslog(LOG_INFO, message);
>  into:
>    syslog(LOG_INFO, "%s", message);
>  but this remains scary:   :-/
>    sprintf(message, "%s-%02d/%02d %02d:%02d", message, ...);
>
>
>  Finally, the /tmp usage to run arbitrary commands scares me the most:
>  - AFAICT, mkdir /tmp/micro_evtd is unsecure
>  - /usr/sbin/micro_evtd.event is then copied into it unconditionally
>   (even if the dir aleady existed)
>  (So I could create /tmp/micro_evtd and a
>  /tmp/micro_evtd/micro_evtd.event -> /etc/passwd symlink and clobber any
>  file on startup?)
>  - strTmpPath seems to be able to overflow its buffer; the upstream
>   declaration is:
>    char strTmpPath[20]="/tmp";
>   which is then used as follows:
>    sprintf( strTmpPath, "%s", pos);
>   with pos coming from a bunch of string parsin routines, and being set
>   in numerous places with sscanf() calls...
>  - there's a Debian patch to set strTmpPath to:
>    char strTmpPath[20]="/tmp/micro_evtd";
>   I'm not sure this is long enough anymore.
>
>  NB: strTmpPath() is used in execute_command2() whenver not running the
>  CP_SCRIPT.
>
>   HTH,
> --
> Loïc Minier
>
>
>



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to