[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Weirdness with stat()
Very good. thanks.
Jim
On Tue, 4 Jul 2000, Steve Schlaifer wrote:
> On Tue, 4 Jul 2000, Jim Hull wrote:
> > [...]
> >
> > struct stat *st;
> >
> > stat(CONFIG, st);
> > if ((st->st_uid != 0) || (st->st_mode != 33152)) {
> > fprintf(stderr, "Unsecure modes on configuration files\n");
> > exit(1);
> > }
> >
> > This worked with absolutly no problems on my laptop. I went to run it on
> > my desktop (2.4.0-test2 SMP) and it started segfaulting. It wasn't
> > segfaulting at the stat() call, it was segfaulting in weird places like a
> > syslog() or a execv().
> >
> > [...]
> >
> > Would this be my poor implementation of stat, or would this actually be a
> > kernel bug.
>
> Neither, this is a bad use of stat. In this case, st is an uninitialized
> pointer and you are having stat treat that as a pointer to some random
> location in memory which it dutifully fills with the stat information.
> Change your code to
>
> struct stat st; /* note not *st, just st */
>
> stat(CONFIG, &st); /* note &st not st */
>
> and things will get much better.
>
> --Steve
>
> "We have a government of law, and government officials must
> be held accountable under the law."
>
> -- Judge Royce Lamberth
> U.S. District Court for the District of Columbia
>
Kernel-audit: discussion list for security and the linux kernel
Archive: http://mail.nl.linux.org/kernel-audit/