Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Oct 2002 18:06:44 +0300
From:      Maxim Sobolev <sobomax@FreeBSD.org>
To:        Robert Watson <rwatson@FreeBSD.org>
Cc:        Terry Lambert <tlambert2@mindspring.com>, "Danny J. Zerkel" <dzerkel@columbus.rr.com>, "Vladimir B. Grebenschikov,Moscow,408-7227,123-4567,Some-info" <vova@express.ru>, freebsd-arch@FreeBSD.org, freebsd-current@FreeBSD.org
Subject:   Re: short uid/gid
Message-ID:  <3DAD8084.C60C5C0F@FreeBSD.org>
References:  <Pine.NEB.3.96L.1021016084509.36711I-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Robert Watson wrote:
> 
> On Wed, 16 Oct 2002, Maxim Sobolev wrote:
> 
> > What about source-level compatibility, which IMO is a good thing, at
> > least if it doesn't add too much complexity (it clearly doesn't in this
> > case)? Also, handling single flag should be easier from the coding
> > perspective than a load of new values, after all we can do something
> > like:
> 
> I'm not convinced there's any value to providing the backward
> compatibility that has to be asked for: the only benefit to the current
> short-based API is that it allow serious security holes while not
> following the standard API offered by other platforms (except Linux).
> Freshly compiled applications should be using the proper types to
> represent uid's and gid's -- if they're not doing that in the existing
> code, they'll get truncated to the right size for "bug compatibility".  If
> they are using the correct size, they'll work correctly.  To be able to
> run properly on other platforms (vis Solaris), they already should be
> using those types.

Actually I am not proposing to keep the current short-based API. As I
stated in my previous message, with such system in place all
freshly-recompiled apps will use the new ABI automagically.

> And it's not like the approach you've described makes it any easier to
> implement: you still have to break out the old and new structures since
> changing ipc_perm breaks the ABI for all of the System V interfaces,
> rewrite the kernel code, etc. You might as well have added the
> compatibility system calls since you still have to do all the mapping.

I don't quite understand what you are trying to say. Linux does the
following on the beginning and the end of each {shm,sem,msg}ctl call:

{shm,sem,msg}ctl(...)
{
	if (IPC_64 flag is not set) {
		convert user-supplied structure to a new 64-bit format
	}
	proceed as usual using 64-bit structure
	if (IPC_64 flag is not set) {
		convert result to be transferred back to user into old format
	}
	return
}

This is apparently much more compact, ABI-safe and easier to implement
and maintain since we don't have two versions of mostly the same code.

-Maxim

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3DAD8084.C60C5C0F>