Linux-Development-Sys Digest #915, Volume #7     Mon, 29 May 00 10:13:16 EDT

Contents:
  System integrity check (was Re: ps does not show all processes) (Josef Moellers)
  Re: how does "cardctl suspend" work? (Josef Moellers)
  Re: Boot Error: "kernel panic: No init found. Try Passing init= to  (Josef Moellers)
  Re: comparing passwords (Josef Moellers)
  Re: Beginner Question. (Josef Moellers)
  Re: linux/arch/i386/boot/compressed/misc.c (Wolfram Faul)
  Re: ps does not show all processes (Stefan Taferner)
  Re: System integrity check (was Re: ps does not show all processes) (Stefan Taferner)
  Re: System integrity check (was Re: ps does not show all processes) (Josef Moellers)
  Re: System integrity check (Thomas Steffen)
  kernel documentation, memory management, kmalloc, mmap. (Emmanuel Dreyfus)
  depmod: *** Unresolved symbols in /lib/modules/2.4.0-test1/block/loop.o (Mike 
Dowling)
  Re: kernel documentation, memory management, kmalloc, mmap. (Arnaud Westenberg)
  Re: kernel documentation, memory management, kmalloc, mmap. (Emmanuel Dreyfus)
  Re: comparing passwords ("Frank")
  Re: Very simple linux Scheduler question ("Jason Johnson")
  Re: virt_to_phys vs pgd/pmd/pte_offset calls (Robert Kaiser)
  Re: comparing passwords (Josef Moellers)
  Re: Need ideas for university funded project for linux (Nix)
  Re: Need ideas for university funded project for linux (Nix)
  Re: virt_to_phys vs pgd/pmd/pte_offset calls (Emmanuel Dreyfus)
  Technical advantages/disadvantages of Linux (Josef Moellers)
  Re: comparing passwords (Philip)

----------------------------------------------------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: System integrity check (was Re: ps does not show all processes)
Date: Mon, 29 May 2000 09:29:48 +0200

Robert Redelmeier wrote:
> =

> Tim R. wrote:
> =

> > Robert Redelmeier wrote:
> > > Well, then I'd suspect you have a trojaned `ps` .
> > > This is not unusual when a cracker obtains root.
> =

> > how about an ls -l `which ps` or something liek that, and check ps's
> > modified date?
> =

> This is a simplistic check, easy to circumvent.
> tripwire and/or MD5 checksums on critical system
> binaries is a more robust solution.

Since you mention this ... is there a 100% secure method of checking the
integrity of a set of installed files?
I mean: even given the algorithm and a sample installation, a cracker
cannot hide his presence?

I have given this some thought recently and have not come up with a
system that does not require external assistance. I.e. a system that can
run on-line and produce a warning if anything suspicious is found. It
would be Ok to e.g. require a read-only external memory (floppy disk,
smart card of some sort) which contains a key, but the rest should work
on-line while the system is running.
Shutting doen the system, moving the files to a different system and
checking the off-line would, of course, do the check, but in a 24x7
operation this would be impractical.

-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: how does "cardctl suspend" work?
Date: Mon, 29 May 2000 10:09:29 +0200

Yung-Hsiang Lu wrote:

> I am sorry that I did not make it clear; I would like to know how
> cardctl works internally, not just run it.  Does anybody know?  Thank
> you.

UTSL ... download the pcmcia package from http://pcmcia.sourceforge.org/
it's all there.

-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: Boot Error: "kernel panic: No init found. Try Passing init= to 
Date: Mon, 29 May 2000 10:11:13 +0200

Kevin McQuiggin wrote:
> =

> Hi There:
> =

> Thanks for the quick reply! I will try this and let you know what happe=
ns. It's
> something to do with the kernel config, under the "make config" step: I=
 reinstalled
> kernel sources and then ran "make config", answered the hundred questio=
ns, and now
> it's working fine. I suspect I answered one or two of the questions dif=
ferently. I
> will endeavour to compare the two config files and see if I can find ou=
t what was
> causing the problem.
> =

> Good advice the the "make zlilo".

Since you mention "kernel config", the important error message is
probably a few lines above. The "init not found" message often comes
when the kernel fails to mount the proper root directory.

-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: comparing passwords
Date: Mon, 29 May 2000 10:15:31 +0200

Philip wrote:
> =

> How can I compare the root password with a password which a user
> entered.
> I want to make a tool like su .. please do not reply with "why do you
> want to make a tool that already exist" .. I don't ! :) ok?
> =

> pw->pw_passwd conains 'x' .. and thats not my root password :)

As Jerry Peters points out, the "x" means you have shadow passwords
installed.
Also, the UN*X way of authentication does not compare plaintext
passwords, but encrypted passwords, so you don't do
        if (strcmp(entered_password, password_from_shadow) =3D=3D 0)
                accept_user();
but
        pw1 =3D encrypt(entered_password);
        pw2 =3D encrypt(password_from_shadow);
        if (strcmp(pw1, pw2) =3D=3D 0)
                accept_user();

There seems to be no known way to reconstruct the exact password from
the string stored in either /etc/passwd or /etc/shadow.

-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: Beginner Question.
Date: Mon, 29 May 2000 10:18:45 +0200

"Steven M. Duhaime" wrote:
> =

> I'm learning C out of books for now, or at least I'm going to try. My
> problem is very basic. How can I use 'cout'? I haven't been able to fin=
d
> reference to 'printf', and my books don't work with it. I found the
> 'iostream.h' header file in another directory, but I still can't compil=
e
> my beginner programs.

"cout" is a C++-ism. The corresponding C-ism is "stdout". It's
referenced implicitly when you use "printf", "putchar" and "puts" and
explicitly when you use "fprintf", "[f]putc" and "fputs".

So, "cout << "Hello, world!\n";" would be "printf("Hello, world!\n");"
or "fprintf(stdout, "Hello, world!\n");".

Hope this helps,

-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Wolfram Faul <[EMAIL PROTECTED]>
Subject: Re: linux/arch/i386/boot/compressed/misc.c
Date: Mon, 29 May 2000 10:47:31 +0200

Hallo,

jacinth wrote:

> hello everyone:
>     I can't understand what are these lines living for??
>
> #define STACK_SIZE (4096)
>
> long user_stack [STACK_SIZE];
>
> struct {//what is it??
>  long * a;
>  short b;
> } stack_start = { & user_stack [STACK_SIZE] , __KERNEL_DS };
>
> in this code, none uses stack_start....
>
> thanks

In this variable the starting adress and the segment descriptor ist
stored. The memory is statically allocated soemwhere else (I have
forgotten the file name  :-(  ).
There is similar way to setup the kernel stack in head.S. Look for
"start_stack".


    Wolfram


------------------------------

Subject: Re: ps does not show all processes
From: Stefan Taferner <[EMAIL PROTECTED]>
Date: 29 May 2000 11:02:41 +0200

"Jackson C. Allen" <[EMAIL PROTECTED]> writes:

> I RTFM again an tried "ps aux" as root and other logins. It still does
> not display anything about sendmail and some other processes I know are
> running. I can find the hidden process in /proc.

You are sure that sendmail et al isn't run via inetd on your system ?

-- Stefan

------------------------------

Subject: Re: System integrity check (was Re: ps does not show all processes)
From: Stefan Taferner <[EMAIL PROTECTED]>
Date: 29 May 2000 11:05:36 +0200

Josef Moellers <[EMAIL PROTECTED]> writes:
[...]
> > This is a simplistic check, easy to circumvent.
> > tripwire and/or MD5 checksums on critical system
> > binaries is a more robust solution.
> 
> Since you mention this ... is there a 100% secure method of checking the
> integrity of a set of installed files?
> I mean: even given the algorithm and a sample installation, a cracker
> cannot hide his presence?

How about chattr to secure some files (logfile, etc)?

The safest way is probably to write critical message directly to a printer
or another standalone computer via serial port.

-- 
Stefan

------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: System integrity check (was Re: ps does not show all processes)
Date: Mon, 29 May 2000 11:08:52 +0200

Stefan Taferner wrote:
> =

> Josef Moellers <[EMAIL PROTECTED]> writes:
> [...]
> > > This is a simplistic check, easy to circumvent.
> > > tripwire and/or MD5 checksums on critical system
> > > binaries is a more robust solution.
> >
> > Since you mention this ... is there a 100% secure method of checking =
the
> > integrity of a set of installed files?
> > I mean: even given the algorithm and a sample installation, a cracker=

> > cannot hide his presence?
> =

> How about chattr to secure some files (logfile, etc)?

Who protects you against a chattr back?

> The safest way is probably to write critical message directly to a prin=
ter
> or another standalone computer via serial port.

What critical message? "System is OK"? Like in
        echo "System is OK"

-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Thomas Steffen <[EMAIL PROTECTED]>
Subject: Re: System integrity check
Date: 29 May 2000 11:10:29 +0200

Josef Moellers <[EMAIL PROTECTED]> writes:

> Since you mention this ... is there a 100% secure method of checking the
> integrity of a set of installed files?
> I mean: even given the algorithm and a sample installation, a cracker
> cannot hide his presence?

He could have changed the kernel (maybe even using a module) to
masquerade the changes, so you need to boot a save medium. Like a
CD...

Generally though, a statically linked binary to check things should be 
ok. If you write it yourself, the chances a very low that the intruder 
has any clue how to circumvent the check. 

> Shutting doen the system, moving the files to a different system and
> checking the off-line would, of course, do the check, but in a 24x7
> operation this would be impractical.

There seems to be no easy solution. Apart from hardware ro media.
(maybe disabling the write line of an IDE disk is enough?) But even
that drive could be "virtualised" by the intruder. 

                Thomas
-- 
We regret to announce that Windows 2000 wont be ready before 1901.

------------------------------

From: [EMAIL PROTECTED] (Emmanuel Dreyfus)
Subject: kernel documentation, memory management, kmalloc, mmap.
Date: Mon, 29 May 2000 11:16:08 +0200

hi! 

I'm looking for documentation about kernel programming. I'm used to the
BSD world, where there is lot of stuff about the kernel in section 9 of
the man pages, and I don't know where to find that kind of information
for Linux. Here are a few problem I have, and for which I'm looking some
documentation:

First problem: information about memory management: I did read that the
Linux kernel sees physical memory directly (ie: kernel virtual
addresses=physical addresses). Is it true? If not, how do I translate
between kernel virtual addresses and physical addresses? 

Other problem: kmalloc and get_free_page feature a lot of options
(GFP_BUFFER, GFP_DMA, etc...). Where can I find info about them?

Last problem: I have a kernel resident buffer, with a kernel virtual
address kptr. Using an ioctl, I get this address in a user process. I
try to map the buffer in the user process virtual memory by issueing a
mmap on /dev/kmem at offset kptr: 
  vptr = mmap(0, PAGESIZE, PROT_READ,
                   MAP_SHARED|MAP_FILE, fdkmem, (off_t)kptr);

The mmap is successful, but I don't get my buffer mapped (It's not the
data I did set up in kernel memory.) Why? 

Thank you for any answer...

-- 
Emmanuel Dreyfus
[EMAIL PROTECTED]

------------------------------

From: [EMAIL PROTECTED] (Mike Dowling)
Subject: depmod: *** Unresolved symbols in /lib/modules/2.4.0-test1/block/loop.o
Date: 29 May 2000 09:44:16 GMT

Does anybody know what causes this?  The 2.3.99-pre kernels were all
right, but the modules cease to work for me with the 2.4.0-test1 kernel.

When compiling the modules, I get zillions of warnings like 

/usr/src/linux/include/linux/modules/sb_card.ver:5: warning: this is the
location of the previous definition
/usr/src/linux/include/linux/modules/sb_common.ver:7: warning:
`__ver_sb_dsp_disable_midi' redefined
/usr/src/linux/include/linux/modules/sb_card.ver:7: warning: this is the
location of the previous definition

I then went off and got the newest modutils that I could find
(modutils-2.3.11), but that did not help either.

Cheers,
Mike

-- 
My email address [EMAIL PROTECTED] above is a valid email address.
It is, in fact, a sendmail alias; the digit 'N' is incremented regularly.
Spammed aliases will be deleted.  Currently, mike[26,27]
are valid.  If email to mikeN bounces, try mikeN+1.

------------------------------

Date: Mon, 29 May 2000 10:09:55 +0200
From: Arnaud Westenberg <[EMAIL PROTECTED]>
Subject: Re: kernel documentation, memory management, kmalloc, mmap.

Emmanuel Dreyfus wrote:
 
> I'm looking for documentation about kernel programming. I'm used to the
> BSD world, where there is lot of stuff about the kernel in section 9 of
> the man pages, and I don't know where to find that kind of information
> for Linux. Here are a few problem I have, and for which I'm looking some
> documentation:

You can find tons of information in the "guides" at
http://www.linuxdoc.org/guides.html You probably want to read the linux
kernel guide, it has a chapter on memory management.
 
> First problem: information about memory management: I did read that the
> Linux kernel sees physical memory directly (ie: kernel virtual
> addresses=physical addresses). Is it true? If not, how do I translate
> between kernel virtual addresses and physical addresses?

Yes thats correct, the kernel is linked to run in physical address
space.

> Other problem: kmalloc and get_free_page feature a lot of options
> (GFP_BUFFER, GFP_DMA, etc...). Where can I find info about them?

Not sure, but you could try the sources. However the priority options
most used is GFP_KERNEL for normal retreival, GFP_ATOMIC for atomic
allocation and GFP_DMA for dma suitable pages. the GFP_DMA flag should
be used together with GFP_KERNEL or GFP_ATOMIC.

You should be aware of GFP_KERNEL uses (amongst other) swapping to
allocate memory and your function needs to be reentrant.
 
> Last problem: I have a kernel resident buffer, with a kernel virtual
> address kptr. Using an ioctl, I get this address in a user process. I
> try to map the buffer in the user process virtual memory by issueing a
> mmap on /dev/kmem at offset kptr:
>   vptr = mmap(0, PAGESIZE, PROT_READ,
>                    MAP_SHARED|MAP_FILE, fdkmem, (off_t)kptr);
> 
> The mmap is successful, but I don't get my buffer mapped (It's not the
> data I did set up in kernel memory.) Why?

This might be an alignment issue, could you post more of your code?

Regards Arnaud

------------------------------

From: [EMAIL PROTECTED] (Emmanuel Dreyfus)
Subject: Re: kernel documentation, memory management, kmalloc, mmap.
Date: Mon, 29 May 2000 13:41:38 +0200

Arnaud Westenberg <[EMAIL PROTECTED]> wrote:

Thank you for the URL (kernel guide)

> Yes thats correct, the kernel is linked to run in physical address
> space.

So what is the difference between /dev/mem and /dev/kmem for Linux?

[kmalloc options]
> Not sure, but you could try the sources. 

I'm grepping in kernel source code everyday :o/

> This might be an alignment issue, could you post more of your code?

Allocation (kernel side). mpi_contigmem_t is just a struct with a few
fields. It's page-alligned because I use get_free_page.
mpi_vtophys_table=(mpi_contigmem_t*)__get_free_page(GFP_KERNEL);

The ioctl define:
#define MPI_GETVTOPHYSTABLE     _IOR('O', 34, caddr_t)

The ioctl implementation (kernel side):
  case MPI_GETVTOPHYSTABLE:
    /* data is caddr_t */
    *(mpi_contigmem_t **) data=mpi_vtophys_table;
    return 0;
    break;

The userland processus:
  kptr=0;
  res=ioctl(dev, MPI_GETVTOPHYSTABLE, &kptr);
  fdkmem = open("/dev/kmem", O_RDWR);
  vptr=0;
  vptr = mmap(0, PAGESIZE, PROT_READ,
                   MAP_SHARED|MAP_FILE, fdkmem, (off_t)kptr);

I removed all error checks to get a shorter listing. All system calls
(ioctl, open, mmap) return values are checked, and no error occurs.

If I log mpi_vtophys_table value in kernel mode just after its
allocation, and in the user process after the ioctl MPI_GETVTOPHYSTABLE,
I get the same value.

If I dump the mpi_vtophys_table structure in kernel mode, I get what I
did write previously there. I mean I'm using memory that does exists ;o)

-- 
Emmanuel Dreyfus
[EMAIL PROTECTED]

------------------------------

From: "Frank" <[EMAIL PROTECTED]>
Subject: Re: comparing passwords
Date: Mon, 29 May 2000 12:03:26 GMT

Josef Moellers <[EMAIL PROTECTED]>...
^
^       pw1 = encrypt(entered_password);
^       pw2 = encrypt(password_from_shadow);
^       if (strcmp(pw1, pw2) == 0)
^               accept_user();
^

Shouldn't that be the following?

      pw1 = encrypt(entered_password);
      pw2 = password_from_shadow();


Re: man shadow

Frank

------------------------------

From: "Jason Johnson" <[EMAIL PROTECTED]>
Subject: Re: Very simple linux Scheduler question
Date: Mon, 29 May 2000 07:16:44 -0500

Hrm.  This must be a really stupid question, or a really hard one, based on
the number
of answers I have recieved.

Jason Johnson wrote in message ...
>Hello,
>
>I have question about the linux scheduler.  I have been looking
>through the source code, and as far as I can tell
>it looks like, that each process has only a certain
>amount of ticks it is allowed to run.  When it runs out, it will not be
>scheduled again until all other runable processes have also
>used all of there ticks, at which point all the runable processes
>have there quantums recalculated and the whole thing starts over.
>Am I correct here (I am obviously ignoring processes that do IO,
>or get put to sleep in general)?
>
>Thanks in advance for indulging my curiosity.
>
>Jason
>
>



------------------------------

From: [EMAIL PROTECTED] (Robert Kaiser)
Subject: Re: virt_to_phys vs pgd/pmd/pte_offset calls
Date: 29 May 2000 12:21:18 GMT

In article <8gm2tr$80v$[EMAIL PROTECTED]>,
        Timur Tabi <[EMAIL PROTECTED]> writes:
> In article <8gle14$o02$[EMAIL PROTECTED]>,
>   [EMAIL PROTECTED] (Robert Kaiser) wrote:
> Good point.  But since only a driver can travers the pgd/pmd/pte
> structures, aren't interrupts and paging disabled while the driver is
> running?

Interrupts are definitely not disabled by default when driver code
is being executed. I'm not sure about paging.

>  That is, giving a user-space virtual address that is passed to
> my driver, I can obtain the physical address, do something with that,
> and then exit.

If "do something with that" involves waiting, e.g. for an interrupt,
then you can't do that. Otherwise im not sure (anyone?).

> Can I call a kernel API to lock that physical page down, so that I don't
> have to traverse the structures every time?  If so, what is it called,

There is the mlock() system call. The problem with it is that it
can only be called by root. 

There is a kernel patch at ftp://ftp.sysgo.de/pub/Linux that
I once made to enable DMA from/to user-space buffers. It moves the
check for root permissions to a different place in the mlock()
syscall's execution path, thus allowing device drivers to call
the locking code without having to run from a root process.

> and will I have to unlock the page before the application exits (that
> is, can I lock an application's memory without any consequences other
> than increase memory fragmentation?)

Well, if you lock too much memory, you'll eventually bring the
system down. mlock() has a very bogus check to avoid the worst.

Note that the 2.3.x kernels seem to have a new feature (look for
"kiobuf") that allows user space DMA, so this might also do what
you need.


Cheers

Rob

================================================================
Robert Kaiser                    email: rkaiser AT sysgo DOT de
SYSGO RTS GmbH
Klein-Winternheim / Germany




------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Re: comparing passwords
Date: Mon, 29 May 2000 15:17:53 +0200

Frank wrote:
> =

> Josef Moellers <[EMAIL PROTECTED]>...
> ^
> ^       pw1 =3D encrypt(entered_password);
> ^       pw2 =3D encrypt(password_from_shadow);
> ^       if (strcmp(pw1, pw2) =3D=3D 0)
> ^               accept_user();
> ^
> =

> Shouldn't that be the following?
> =

>       pw1 =3D encrypt(entered_password);
>       pw2 =3D password_from_shadow();

Yes, of course, sorry, I should have switched my brains on before
replying.

-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Nix <$}xinix{[email protected]>
Crossposted-To: 
comp.os.linux,comp.os.linux.development,comp.os.linux.development.apps,comp.os.linux.misc,comp.os.linux.setup,comp.os.linux.advocacy
Subject: Re: Need ideas for university funded project for linux
Date: 29 May 2000 11:41:38 +0100

Craig Kelley <[EMAIL PROTECTED]> writes:

> For all the faults in dpkg and rpm; they are light-years ahead of
> autoconf

They do completely different jobs. autoconf is a software portability
enhancement tool, not a software packager!

-- 
`People's needs are not `finance'. You can't eat a bank.' --- Alan Rosenthal

------------------------------

From: Nix <$}xinix{[email protected]>
Crossposted-To: 
comp.os.linux,comp.os.linux.development,comp.os.linux.development.apps,comp.os.linux.misc,comp.os.linux.setup,comp.os.linux.advocacy
Subject: Re: Need ideas for university funded project for linux
Date: 29 May 2000 11:47:46 +0100

David Steuber <[EMAIL PROTECTED]> writes:

> I should probably really look at GTK+/GTK--, but I've got this idea in 
> my mind that a GUI toolkit should be based on C++ from the outset
> rather than using C++ wrappers, however good they may be, around a C
> toolkit.  I could be wrong in this opinion.  Maybe a C toolkit is the
> best way to go.  But we already have Xlib...  Yes, it is not a
> 'toolkit'.  But it is what is ultimately being wrapped.

Gtk--'s wrappers are *very* good, IMHO better than Qt's; not least
because it does what MOC does the *right* way, in real C++ (with the
libsigc++ library).

-- 
`People's needs are not `finance'. You can't eat a bank.' --- Alan Rosenthal

------------------------------

From: [EMAIL PROTECTED] (Emmanuel Dreyfus)
Subject: Re: virt_to_phys vs pgd/pmd/pte_offset calls
Date: Mon, 29 May 2000 15:41:52 +0200

Timur Tabi <[EMAIL PROTECTED]> wrote:

> In short, to obtain the physical address of a user-space virtual
> address, use pgd/pmd/pte_offset.  To obtain the physical address of a
> kernel-space virtual address, use virt_to_phys.

I understood that kernel virtual addresses were the physical addresses.
I'm now completely confused about kernel adressing mode, since I can
read in <asm/io.h> that
virt_to_phys(x) = x & ~0xc0000000

if a kernel virtual address is the physical address, I would have
expected virt_to_phys(x) = x

If anyone can explain me how it works...

-- 
Emmanuel Dreyfus
[EMAIL PROTECTED]

------------------------------

From: Josef Moellers <[EMAIL PROTECTED]>
Subject: Technical advantages/disadvantages of Linux
Date: Mon, 29 May 2000 15:46:25 +0200

Hi,

I was asked to present a paper on the technical advantages and
disadvantages of Linux (compared to other Unices). Is there a website
that I could tap for information?
-- =

Josef M=F6llers
Fujitsu Siemens Computers
SHV Server DS 1

------------------------------

From: Philip <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
Subject: Re: comparing passwords
Date: Mon, 29 May 2000 13:59:00 GMT

Ok.. I already took a look at su.c (sh-utils) and indeed it's being done
that way. But how do I get the shadow password ? Or how do I detect if a
system uses shadowed passwords or not ?

if (MY_USER_USES_SHADOW_PASSWORDS)
{
        struct pw *shawodstructthing;
        strcpy(My_encrypted_pass,pw.shadowed_passwd);
} else {
        struct pw *passwd;
        strcpy(My_encrypted_pass,pw.pw_passwd);
}

if
(!strcmp(crypt(my_user_typed_this,My_encrypted_pass),My_encrypted_pass))
{
 /* He's cool */
} else {

        shoot(myuser,with a shotgun);

}


But then all this stuff correct ..



-- 
Philip van Hoof aka freax         _/_/_/                                
http://users.pandora.be/skatan  _/_/  _/ _/_/   _/_/_/    _/_/   _/   _/
mailto:[EMAIL PROTECTED]        _/_/     _/ _/  _/       _/  _/   _/  _/ 
I could be bought, but Linux_/_/_/_/   _/  _/ _/_/    _/_/_/_/   _/_/   
couldn't be. (Linus Torvalds _/_/     _/     _/      _/    _/  _/  _/   
8 Sept. 1996)               _/_/     _/      _/_/_/ _/    _/ _/     _/

------------------------------


** FOR YOUR REFERENCE **

The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:

    Internet: [EMAIL PROTECTED]

You can send mail to the entire list (and comp.os.linux.development.system) via:

    Internet: [EMAIL PROTECTED]

Linux may be obtained via one of these FTP sites:
    ftp.funet.fi                                pub/Linux
    tsx-11.mit.edu                              pub/linux
    sunsite.unc.edu                             pub/Linux

End of Linux-Development-System Digest
******************************

Reply via email to