[Coco] Telnet to your CoCo.. and invite 6 of your friends

Boisy G. Pitre boisy at tee-boy.com
Tue Dec 1 21:12:00 EST 2009


Bob/Aaron,

I checked the assembly for F$SUser and here it is:

FSUser   ldx   <D.Proc      get current process dsc ptr
         ldd   R$Y,u        get requested user number
         std   P$User,x     save new user # in process descriptor
         clrb               no error
         rts                and return

I checked the OS-9/68K version of F_SUser and here's what the docs say:

- Users with group ID zero may change their IDs to anything.
- A primary module owned by a group zero user may change its ID to anything.
- Any primary module may change its user ID to match the module’s owner.
All other attempts to change the user ID number return an EOS_PERMIT error.

There is no concept of a group number in OS-9/6809; nor do OS-9/6809 modules store the user id/group id in the module header, so none of the above apply.

I think the idea of making the F$SUser call available only to processes owned by the super user is a red herring. There are plenty of ways to wreak havoc under OS-9/6809 as a non-super user, and since all memory is writable, changing one byte in the kernel can bypass the check for super user completely.  Frankly, I wouldn't worry about changing F$SUser.
--
Boisy G. Pitre
http://www.tee-boy.com/

On Dec 1, 2009, at 5:21 PM, Bob Devries wrote:

> Should the new F$SUser call return an illegal service request error if an attempt is made by a user other than user 0?
> 
> I'm separated from my docs by some 1200 kilometers at this time, so I can't look that up, at least not easily.
> 
> Regards, Bob Devries
> 
> --
> Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.
> 
> Edsger W.Dijkstra, 18 June 1975
> 
> ----- Original Message ----- From: "Aaron Wolfe" <aawolfe at gmail.com>
> To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
> Sent: Wednesday, December 02, 2009 10:06 AM
> Subject: Re: [Coco] Telnet to your CoCo.. and invite 6 of your friends
> 
> 
> I'd be happy to try writing a replacement F$SUser that fails if the
> current userid > 0.  It's probably just a couple bytes of changes.
> 
> Would this break things?  I'm guessing the most compatible behavior
> would be not to return any errors, since the original always succeeds.
> 
> -Aaron
> 
> 
> On Tue, Dec 1, 2009 at 5:55 PM, Willard Goosey <goosey at virgo.sdc.org> wrote:
>> On Tue, Dec 01, 2009 at 03:36:50PM -0600, Boisy G. Pitre wrote:
>> 
>>> That's exactly what would happen... when the kernel scans for krnpX
>>> modules, it will call the os9 F$SSvc system call to install the
>>> system calls in that module; if any of those system calls reuse an
>>> existing system call number, then their address will overrwrite the
>>> address stored in the system call jump table in RAM.
>> 
>> Well, that's the definitive answer from the definitive master. :-)
>> 
>> That's really cool that a mechanism like that was already in place and
>> running at a time when most operating systems, even for mainframes and
>> minis, had completely statically linked kernels.
>> 
>>> It's a great way to extend the operating system.
>> 
>> Sounds really useful.
>> 
>> Willard
>> --
>> Willard Goosey goosey at sdc.org
>> Socorro, New Mexico, USA
>> I search my heart and find Cimmeria, land of Darkness and the Night.
>> -- R.E. Howard
>> 
>> --
>> Coco mailing list
>> Coco at maltedmedia.com
>> http://five.pairlist.net/mailman/listinfo/coco
>> 
> 
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco 
> 
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco




More information about the Coco mailing list