Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #10247

Re: Teaching C (was Re: hexump.c)

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Teaching C (was Re: hexump.c)
Date 2011-09-14 13:27 -0700
Organization None to speak of
Message-ID <lnpqj2amz7.fsf@nuthaus.mib.org> (permalink)
References (5 earlier) <j4n4gb$o81$1@speranza.aioe.org> <OdWdnfDmFqx4I_LTnZ2dnUVZ_t-dnZ2d@bestweb.net> <j4ofb9$deb$1@speranza.aioe.org> <pan.2011.09.14.12.31.49.174000@nowhere.com> <j4qa4f$4hh$1@speranza.aioe.org>

Show all headers | View raw


jacob navia <jacob@spamsink.net> writes:
> Le 14/09/11 14:31, Nobody a écrit:
>> On Tue, 13 Sep 2011 22:44:28 +0200, jacob navia wrote:
>>
>>> 2) Can you tell me of an EXISTING system that sets argv[0] to anything
>>>      else than the name of the program?

Yes.  I just ran the following program:

#include <stdio.h>
int main(int argc, char **argv) {
    for (int i = 0; i <= argc; i ++) {
        printf("argv[%d] = ", i);
        if (argv[i] == NULL) {
            printf("NULL\n");
        }
        else {
            printf("\"%s\"\n", argv[i]);
        }
    }
    return 0;
}

and it gave me this output:

argv[0] = NULL

I just ran it again and got this output:

argv[0] = "argv[0] is a lie"
argv[1] = NULL

Why?  Because I invoked it from a 6-line C program that uses execv().

>> Unless running a script (a file beginning with "#!"), Unix sets argv to
>> exactly what is passed to execve(). If you execute a program with:
>>
>> 	char *arg0 = NULL;
>> 	execve("foo",&arg0, environ);
>>
>> the resulting program will have "argc == 0&&  argv[0] == NULL".
>>
>> Setting argv[0] to the name of the program is only a convention, not
>> something which is enforced by the kernel.
>>
>
> Yes. So, you can crash probably most Unix programs that way.
> So what?

No, I don't believe you can.  It will only crash Unix programs that
don't blindly assume that argv[0] != NULL.  If you find Unix programs
that crash when invoked with argv[0] == NULL, you should consider
reporting it as a bug.

> Most zip/unzip programs are only one program. They look at argv[0]
> to see if they should be unzipping or zipping.

Perhaps so.  info-zip, the default version on Ubuntu, has separate
executables for zip and unzip.  But grep is a good example -- and
at least the GNU version of grep has an explicit check; if argv[0]
== NULL; it reports it as a bug and aborts.  (At least there's code
to do that; I'm not certain that it's actually used.)  I suspect
that most Unix/Linux programs that care abaout the value of argv[0]
do something similar.

> There is no system that doesn't set argv[0] to the name of the program.

It depends on how you invoke the program.  And I wouldn't bet a lot
on the assumption that "the name of the program" is a name that can be
used to invoke it.

> I added a guard (if (argv[0]) in the program as presented in the
> exercise.

Good for you.  We pointed out the possibility that argv[0] isn't
necessarily non-null and you changed the program to allow for it.

So why are you still whining about it?

> One thing you should consider is that the beginner must begin with
> simple programs, not highly secured programs designed to run a simple
> hex dump utility in a 100% secure environment. There is NO point in
> making hexdump.c more complex than it is already.

Then why did you change it?  I'm glad you did, but it seems
inconsistent with what you've been saying.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

hexump.c jacob navia <jacob@spamsink.net> - 2011-09-09 22:53 +0200
  Re: hexump.c tea strainer <nospam@nospam.com> - 2011-09-09 21:06 +0000
    Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-09 23:57 +0200
    Re: hexump.c NicStevens <nic.stevens@gmail.com> - 2011-09-12 13:22 -0700
  Re: hexump.c Ian Collins <ian-news@hotmail.com> - 2011-09-10 09:18 +1200
    Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-09 23:59 +0200
  Re: hexump.c Ike Naar <ike@iceland.freeshell.org> - 2011-09-09 22:29 +0000
    Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 00:39 +0200
      Re: hexump.c Ike Naar <ike@iceland.freeshell.org> - 2011-09-09 22:53 +0000
        Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 00:58 +0200
        Re: hexump.c Seebs <usenet-nospam@seebs.net> - 2011-09-13 06:44 +0000
          Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-13 10:33 +0200
            Re: hexump.c Fritz Wuehler <fritz@spamexpire-201109.rodent.frell.theremailer.net> - 2011-09-13 18:02 +0200
            Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-13 16:36 -0400
              Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-13 22:44 +0200
                Re: Teaching C (was Re: hexump.c) Nobody <nobody@nowhere.com> - 2011-09-14 13:31 +0100
                Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 15:27 +0200
                Re: Teaching C (was Re: hexump.c) Richard Damon <news.x.richarddamon@xoxy.net> - 2011-09-14 11:49 -0400
                Re: Teaching C (was Re: hexump.c) Keith Thompson <kst-u@mib.org> - 2011-09-14 13:27 -0700
                Re: Teaching C (was Re: hexump.c) pacman@kosh.dhis.org (Alan Curry) - 2011-09-14 20:59 +0000
                Re: Teaching C (was Re: hexump.c) Nobody <nobody@nowhere.com> - 2011-09-14 22:20 +0100
                Re: Teaching C (was Re: hexump.c) James Kuyper <jameskuyper@verizon.net> - 2011-09-14 17:20 -0400
                Re: Teaching C (was Re: hexump.c) pacman@kosh.dhis.org (Alan Curry) - 2011-09-15 01:51 +0000
                Re: Teaching C (was Re: hexump.c) Keith Thompson <kst-u@mib.org> - 2011-09-14 19:29 -0700
                Re: Teaching C (was Re: hexump.c) Keith Thompson <kst-u@mib.org> - 2011-09-14 19:21 -0700
                Re: Teaching C Ben Pfaff <blp@cs.stanford.edu> - 2011-09-14 19:58 -0700
                Re: Teaching C Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-09-14 21:55 -0600
                Re: Teaching C James Kuyper <jameskuyper@verizon.net> - 2011-09-15 06:54 -0400
                Re: Teaching C Keith Thompson <kst-u@mib.org> - 2011-09-15 11:58 -0700
                Re: Teaching C Tim Rentsch <txr@alumni.caltech.edu> - 2012-01-24 12:57 -0800
                Re: Teaching C Nobody <nobody@nowhere.com> - 2011-09-15 14:25 +0100
                Re: Teaching C Seebs <usenet-nospam@seebs.net> - 2011-09-16 22:00 +0000
                Re: Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-14 12:54 -0400
                Re: Teaching C (was Re: hexump.c) James Kuyper <jameskuyper@verizon.net> - 2011-09-14 13:26 -0400
                Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 19:33 +0200
                Re: Teaching C (was Re: hexump.c) jameskuyper <jameskuyper@verizon.net> - 2011-09-14 11:33 -0700
                Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 21:17 +0200
                Re: Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-16 11:47 -0400
                Re: Teaching C (was Re: hexump.c) Seebs <usenet-nospam@seebs.net> - 2011-09-14 20:43 +0000
                Re: Teaching C (was Re: hexump.c) Nobody <nobody@nowhere.com> - 2011-09-14 22:35 +0100
                Re: Teaching C (was Re: hexump.c) gordonb.8a7i1@burditt.org (Gordon Burditt) - 2011-09-14 17:31 -0500
                Re: Teaching C (was Re: hexump.c) jacob navia <jacob@spamsink.net> - 2011-09-14 19:32 +0200
                Re: Teaching C (was Re: hexump.c) Kenneth Brody <kenbrody@spamcop.net> - 2011-09-16 11:27 -0400
                Re: Teaching C (was Re: hexump.c) Malcolm McLean <malcolm.mclean5@btinternet.com> - 2011-09-16 08:49 -0700
                Re: Teaching C (was Re: hexump.c) James Kuyper <jameskuyper@verizon.net> - 2011-09-17 15:04 -0400
            Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-13 20:31 -0700
              Re: hexump.c Malcolm McLean <malcolm.mclean5@btinternet.com> - 2011-09-14 03:22 -0700
              Re: hexump.c "BartC" <bc@freeuk.com> - 2011-09-14 11:40 +0100
                Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-14 13:54 +0200
                Re: hexump.c Nobody <nobody@nowhere.com> - 2011-09-14 13:50 +0100
                Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-14 11:35 -0700
                Re: hexump.c Seebs <usenet-nospam@seebs.net> - 2011-09-14 19:12 +0000
                Re: hexump.c John Bode <jfbode1029@gmail.com> - 2011-09-14 15:31 -0700
                Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-15 00:59 +0200
                Re: hexump.c Kleuskes & Moos <kleuske@somewhere.else.net> - 2011-09-14 23:14 +0000
                Re: hexump.c John Bode <jfbode1029@gmail.com> - 2011-09-15 08:52 -0700
                Re: hexump.c Jens Gustedt <jens.gustedt@loria.fr> - 2011-09-14 21:22 +0200
                Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-14 21:26 +0200
                Re: hexump.c Ian Collins <ian-news@hotmail.com> - 2011-09-15 07:32 +1200
                Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-14 21:44 +0200
                Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-14 13:49 -0700
                Re: hexump.c Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2011-09-16 00:50 +0300
                Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-15 18:34 -0700
                Re: hexump.c Keith Thompson <kst-u@mib.org> - 2011-09-14 12:16 -0700
                Hypocrites jacob navia <jacob@spamsink.net> - 2011-09-14 21:40 +0200
                Re: Hypocrites Keith Thompson <kst-u@mib.org> - 2011-09-14 19:11 -0700
                Re: hexump.c Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-09-14 15:05 +0100
                Re: hexump.c Malcolm McLean <malcolm.mclean5@btinternet.com> - 2011-09-14 07:56 -0700
                Re: hexump.c "BartC" <bc@freeuk.com> - 2011-09-14 17:23 +0100
              Re: hexump.c Seebs <usenet-nospam@seebs.net> - 2011-09-14 19:12 +0000
              Re: hexump.c John Bode <jfbode1029@gmail.com> - 2011-09-14 15:24 -0700
      Re: hexump.c gordonb.ik17p@burditt.org (Gordon Burditt) - 2011-09-09 18:16 -0500
        Re: hexump.c Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-09-12 22:24 +0000
  Re: hexump.c "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-09-09 20:33 -0400
    Re: hexump.c Ian Collins <ian-news@hotmail.com> - 2011-09-10 12:42 +1200
      Re: hexump.c "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-09-10 17:16 -0400
    Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 10:03 +0200
  Re: hexump.c Nobody <nobody@nowhere.com> - 2011-09-10 10:04 +0100
    Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 11:41 +0200
      Re: hexump.c pete <pfiland@mindspring.com> - 2011-09-10 05:51 -0400
        Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 12:38 +0200
          Re: hexump.c Nobody <nobody@nowhere.com> - 2011-09-10 17:53 +0100
  Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 12:46 +0200
    Re: hexump.c Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-09-10 13:03 +0100
      Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-10 15:34 +0200
    Re: hexump.c "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-09-10 17:37 -0400
      Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-11 00:10 +0200
        Re: hexump.c Patrick Scheible <kkt@zipcon.net> - 2011-09-10 21:03 -0700
  Re: hexump.c Barry Schwarz <schwarz45@yahoo.com> - 2011-09-11 00:37 -0700
    Re: hexump.c jacob navia <jacob@spamsink.net> - 2011-09-11 13:56 +0200

csiph-web