Patch Improves, BUT... mostly net

Patch A has been good, reloaded from scratch

el900 works, BUT not w/ big stack nor Qnet?
svga
fewer input driver lockups (keyboard/mouse) on certain motherboards

but few things need smoothing

some svga modes lock that didn’t in beta? (in combo w/ input driver?)
(maybe I just have to be careful not to move the mouse in the transition?)

no PS/2 wheel mouse? or is the QNXstart one official?


I still need to start inetd manually, despite…

Start some daemons…

if test ! -d /dev/socket; then
echo “Starting inetd” inetd

echo “Starting pdebug at port 8000”

pdebug 8000 &

fi


(/etc/rc.d/rc.sysinit) I saw waitfor defined…

function waitfor {
typeset -i i=0
while test $i -lt 60 -a ! $1 -ef $1 ; do
sleep 1;
let i=i+1;
done
unset i
}


So I put it in front of all the needs /dev/socket stuff…

echo “Waiting for Networking in $0…”
waitfor /dev/socket
sleep 1

Michael J. Ferrador <n2kra@orn.com> wrote:

no PS/2 wheel mouse? or is the QNXstart one official?

No… it’s not.

Making mouse drivers that work for all' mice is really difficult. You will see a wheel mouse driver in beta in a seperate patch’ as soon as we kill
the critical bugs that are still in QNX 6.xx

If we had included what we have with this patch, some people (those who
think spending $40.00 on a new mouse is cause for calling out the national
guard) would have been left with non-functioning mice.

Why can’t you let us choose which driver we want? Start with safer one
and have option in ‘input configurator’ to use other one… You already
have ‘wheel mouse’ there, it’s just disabled :slight_smile:

pete@qnx.com wrote:

Michael J. Ferrador <> n2kra@orn.com> > wrote:

no PS/2 wheel mouse? or is the QNXstart one official?

No… it’s not.

Making mouse drivers that work for all' mice is really difficult. You will see a wheel mouse driver in beta in a seperate patch’ as soon as we kill
the critical bugs that are still in QNX 6.xx

If we had included what we have with this patch, some people (those who
think spending $40.00 on a new mouse is cause for calling out the national
guard) would have been left with non-functioning mice.

Igor Kovalenko <Igor.Kovalenko@motorola.com> wrote:

Why can’t you let us choose which driver we want? Start with safer one
and have option in ‘input configurator’ to use other one… You already
have ‘wheel mouse’ there, it’s just disabled > :slight_smile:

Well in some cases if you run the safe' one, you can't run the other one after, and if you run the other one, the safe’ one won’t run after.

So you might think that the wheel mouse driver doesn’t work on your box
because you didn’t reset the machine before trying it.

It get’s even messier, but I don’t want to talk about it anymore. If I think
about mice for too long my ears start ringing and my vision starts to go
black.

Then just force reboot when driver is changed. I can already hear cries
about you going Microsquish ways :slight_smile:

pete@qnx.com wrote:

Igor Kovalenko <> Igor.Kovalenko@motorola.com> > wrote:
Why can’t you let us choose which driver we want? Start with safer one
and have option in ‘input configurator’ to use other one… You already
have ‘wheel mouse’ there, it’s just disabled > :slight_smile:

Well in some cases if you run the safe' one, you can't run the other one after, and if you run the other one, the safe’ one won’t run after.

So you might think that the wheel mouse driver doesn’t work on your box
because you didn’t reset the machine before trying it.

It get’s even messier, but I don’t want to talk about it anymore. If I think
about mice for too long my ears start ringing and my vision starts to go
black.

uhhh… DUH!

why was there negation (!) in the test -d ???

should be:
if test -d /dev/socket

Now it works… Patch B material

Michael J. Ferrador <n2kra@orn.com> wrote in message
news:94kq89$im0$1@inn.qnx.com


I still need to start inetd manually, despite…

Start some daemons…

if test ! -d /dev/socket; then
echo “Starting inetd”
inetd

echo “Starting pdebug at port 8000”

pdebug 8000 &

fi

Just for reference…

We don’t actually recommend editing the system initialization files
directly. When you do an update they won’t be updated since they’re
spilled.

What I do here is create an /etc/rc.d/rc.local file, make it executable
and put any extra stuff (like inetd) in there. That way I’m covered
even when applying a patch. This file is executed as the last step in the
system initialization.


$ ls -l /etc/rc.d/rc.local
-rwxrwxr-x 1 keith 120 370 Jan 22 10:22 /etc/rc.d/rc.local
$ cat /etc/rc.d/rc.local
inetd
mount -Tio-net /lib/dll/npm-qnet.so

BTW, we didn’t start inetd automatically since it tends to be a security
hole. That code in the /etc/rc.d/rc.sysinit was never actually meant to
be used . . .

Michael J. Ferrador <n2kra@orn.com> wrote:

uhhh… DUH!

why was there negation (!) in the test -d ???

should be:
if test -d /dev/socket

Now it works… Patch B material

Michael J. Ferrador <> n2kra@orn.com> > wrote in message
news:94kq89$im0$> 1@inn.qnx.com> …


I still need to start inetd manually, despite…

Start some daemons…

if test ! -d /dev/socket; then
echo “Starting inetd”
inetd

echo “Starting pdebug at port 8000”

pdebug 8000 &

fi


Keith Russell
QNX Software Systems

keith@qnx.com wrote:

Just for reference…

We don’t actually recommend editing the system initialization files
directly. When you do an update they won’t be updated since they’re
spilled.

What I do here is create an /etc/rc.d/rc.local file, make it executable
and put any extra stuff (like inetd) in there. That way I’m covered
even when applying a patch. This file is executed as the last step in the
system initialization.

How would you implement (for instance) mounting a separate partition as
/home?
The way I did it was: in rc.local unmount the default /fs/hd1-… and
remount that partition as /home. There are probably more defaults one
would rather have differently. The “undoing a default and re-doing it
the preferred way in rc.local” trick works, but somehow doesn’t seem
like the right way to me. Note, however, that I’m new to RTP; so chances
are there’s a more elegant way…

rick

$ ls -l /etc/rc.d/rc.local
-rwxrwxr-x 1 keith 120 370 Jan 22 10:22 /etc/rc.d/rc.local
$ cat /etc/rc.d/rc.local
inetd
mount -Tio-net /lib/dll/npm-qnet.so

BTW, we didn’t start inetd automatically since it tends to be a security
hole. That code in the /etc/rc.d/rc.sysinit was never actually meant to
be used . . .

Michael J. Ferrador <> n2kra@orn.com> > wrote:
uhhh… DUH!

why was there negation (!) in the test -d ???

should be:
if test -d /dev/socket

Now it works… Patch B material

Michael J. Ferrador <> n2kra@orn.com> > wrote in message
news:94kq89$im0$> 1@inn.qnx.com> …


I still need to start inetd manually, despite…

Start some daemons…

if test ! -d /dev/socket; then
echo “Starting inetd”
inetd

echo “Starting pdebug at port 8000”

pdebug 8000 &

fi


\

Keith Russell
QNX Software Systems

<keith@qnx.com> wrote in message news:94pk8n$6k7$1@nntp.qnx.com

Just for reference…


BTW, we didn’t start inetd automatically since it tends to be a security
hole. That code in the /etc/rc.d/rc.sysinit was never actually meant to
be used . . .

Security hole? LOL! Am I dreaming or QNX is concerned about security now?
Well, if you are, why don’t you think about security of your message passing
architecture? And security of your transparent native networking? Anyone can
open an attached name regardless of credentials. Names don’t have meaningful
permissions mask even though they are filesystem objects. Anyone can send
any message to anyone, including over network. And root on one node is also
root for all others. Very secure indeed.

Sorry for being cynical but the ‘security’ argument wrt inetd sounds
pathetic from company which never ever gave a slightest damn about security.
It is also lame, because inetd as per se is not more insecure than any other
daemon, not by a tiniest bit. All it does is listens to ports and spawns
other daemons. What people include into inetd.conf is another story and
that’s their business. What you need is better installer capable of
generating inetd.conf based on user decisions.

  • igor

Michael J. Ferrador <> n2kra@orn.com> > wrote:
uhhh… DUH!

why was there negation (!) in the test -d ???

should be:
if test -d /dev/socket

Now it works… Patch B material

Michael J. Ferrador <> n2kra@orn.com> > wrote in message
news:94kq89$im0$> 1@inn.qnx.com> …


I still need to start inetd manually, despite…

Start some daemons…

if test ! -d /dev/socket; then
echo “Starting inetd”
inetd

echo “Starting pdebug at port 8000”

pdebug 8000 &

fi


\

Keith Russell
QNX Software Systems

Igor Kovalenko a écrit :

keith@qnx.com> > wrote in message news:94pk8n$6k7$> 1@nntp.qnx.com> …
Just for reference…


BTW, we didn’t start inetd automatically since it tends to be a security
hole. That code in the /etc/rc.d/rc.sysinit was never actually meant to
be used . . .


Security hole? LOL! Am I dreaming or QNX is concerned about security now?
Well, if you are, why don’t you think about security of your message passing
architecture? And security of your transparent native networking? Anyone can
open an attached name regardless of credentials.

Names don’t have meaningful
permissions mask even though they are filesystem objects. Anyone can send
any message to anyone, including over network.

About this last point, I’m not agree with you, if you call the good posix
function, or just use the default open() function in your resource manager, if
you are talking about resource manager I don’t know about ‘QNX4 like’ names,
permission mask is evalutated.

And root on one node is also
root for all others. Very secure indeed.

Sorry for being cynical but the ‘security’ argument wrt inetd sounds
pathetic from company which never ever gave a slightest damn about security.
It is also lame, because inetd as per se is not more insecure than any other
daemon, not by a tiniest bit. All it does is listens to ports and spawns
other daemons. What people include into inetd.conf is another story and
that’s their business. What you need is better installer capable of
generating inetd.conf based on user decisions.

  • igor

Michael J. Ferrador <> n2kra@orn.com> > wrote:
uhhh… DUH!

why was there negation (!) in the test -d ???

should be:
if test -d /dev/socket

Now it works… Patch B material

Michael J. Ferrador <> n2kra@orn.com> > wrote in message
news:94kq89$im0$> 1@inn.qnx.com> …


I still need to start inetd manually, despite…

Start some daemons…

if test ! -d /dev/socket; then
echo “Starting inetd”
inetd

echo “Starting pdebug at port 8000”

pdebug 8000 &

fi


\

Keith Russell
QNX Software Systems

Igor Kovalenko <kovalenko@home.com> wrote:
: <keith@qnx.com> wrote in message news:94pk8n$6k7$1@nntp.qnx.com
:> Just for reference…
:>
:>
:> BTW, we didn’t start inetd automatically since it tends to be a security
:> hole. That code in the /etc/rc.d/rc.sysinit was never actually meant to
:> be used . . .
:>

: Security hole? LOL! Am I dreaming or QNX is concerned about security now?
: Well, if you are, why don’t you think about security of your message passing
: architecture? And security of your transparent native networking? Anyone can
: open an attached name regardless of credentials. Names don’t have meaningful
: permissions mask even though they are filesystem objects. Anyone can send
: any message to anyone, including over network. And root on one node is also
: root for all others. Very secure indeed.

Hmmm, maybe that’s also why QNET isn’t currently mounted in by default…

-seanb

Alain Bonnefoy wrote:

Names don’t have meaningful
permissions mask even though they are filesystem objects. Anyone can send
any message to anyone, including over network.

About this last point, I’m not agree with you, if you call the good posix
function, or just use the default open() function in your resource manager, if
you are talking about resource manager I don’t know about ‘QNX4 like’ names,
permission mask is evalutated.

Resource managers can check credentials when they handle open(). But
when you do name_open() does not. Not surprizingly, since when you do
name_attach() it creates name in filesystem space with bogus
permissions, without any respect to current umask.

  • igor

Igor Kovalenko <Igor.Kovalenko@motorola.com> wrote:

Names don’t have meaningful
permissions mask even though they are filesystem objects. Anyone can send
any message to anyone, including over network.

About this last point, I’m not agree with you, if you call the good posix
function, or just use the default open() function in your resource manager, if
you are talking about resource manager I don’t know about ‘QNX4 like’ names,
permission mask is evalutated.


Resource managers can check credentials when they handle open(). But
when you do name_open() does not. Not surprizingly, since when you do
name_attach() it creates name in filesystem space with bogus
permissions, without any respect to current umask.

Anyone can call raw ConnectAttach() and send any messages to anybody who
has a channel. The process that receives the message is free to check
the sender’s credentials and decide how to reply based on that. If
you’re using the resource manager library, the library does that check
for you; otherwise you still can do it in your own code – even if
you’re a resource manager that does resmgr_attach() but then calls raw
MsgReceive() and tries to handle all the io messages by hand…

The only real difference between a resource manager and names is that
since names are not required to support standard I/O messages they are
not required to support stuff like stat() or open() or any of the
other Posix permission checking. That’s their purpose – to let you
design your own messaging protocol that has nothing to do with the
standard Posix/QNX I/O messages. It’s up to you how you handle your
security concerns in your own protocol.


Wojtek Lerch (wojtek@qnx.com) QNX Software Systems Ltd.

“Wojtek Lerch” <wojtek@qnx.com> wrote in message
news:94ta41$bqr$1@nntp.qnx.com

Igor Kovalenko <> Igor.Kovalenko@motorola.com> > wrote:
Names don’t have meaningful
permissions mask even though they are filesystem objects. Anyone can
send
any message to anyone, including over network.

About this last point, I’m not agree with you, if you call the good
posix
function, or just use the default open() function in your resource
manager, if
you are talking about resource manager I don’t know about ‘QNX4 like’
names,
permission mask is evalutated.


Resource managers can check credentials when they handle open(). But
when you do name_open() does not. Not surprizingly, since when you do
name_attach() it creates name in filesystem space with bogus
permissions, without any respect to current umask.

Anyone can call raw ConnectAttach() and send any messages to anybody who
has a channel.

Which is bad. Channels are going to be associated with some filesystem
objects either way, whether it’s a resmgr or not (since clients need some
way to figure out the chid). It would make perfect sense to make permissions
mode be attribute of channels and use that mode when attaching a name into
filesystem space. Then ConnectAttach would not give you coid unless you have
sufficient credentials, no matter in what way you obtained chid, even if you
just guessed it. Think about Unix domain sockets, you can’t get a socket
unless your credentials are good. Think about SysV IPC which use same
approach for messages. Think about Mach IPC which also has built-in
security.

Such scheme would make the message passing inherently more secure and that’s
good if you’re really after security, isn’t it? Simpler resource managers
(serving single path) could also benefit from not having to check who the
client is for every message. The microkernel would get just marginally
bigger to handle that, but who gives a damn? After all rethorics in the
white papers all those ‘different memory models’ and ‘linking your app with
microkernel’ turned out to be just a smoke and we still can’t use
microkernel in pure form (untied from procnto).

The process that receives the message is free to check
the sender’s credentials and decide how to reply based on that. If
you’re using the resource manager library, the library does that check
for you; otherwise you still can do it in your own code – even if
you’re a resource manager that does resmgr_attach() but then calls raw
MsgReceive() and tries to handle all the io messages by hand…

The only real difference between a resource manager and names is that
since names are not required to support standard I/O messages they are
not required to support stuff like stat() or open() or any of the
other Posix permission checking. That’s their purpose – to let you
design your own messaging protocol that has nothing to do with the
standard Posix/QNX I/O messages. It’s up to you how you handle your
security concerns in your own protocol.

How ever you handle it in the protocol, you always have to check who the
sender is to make sure you aren’t being fooled. Library does that not by
magic but by spending your CPU cycles. Would not it be better to avoid the
very possibility of ever receiving a message from an unauthenticated guy?

  • igor