Re: IPX without suidroot

Stas Sergeev
2002-08-02T14:37:08Z

[-- Attachment #1: Type: text/plain, Size: 308 bytes --]

Hello.

Grigory Batalov wrote:
> IPX: GetLocalTarget for network cb971126
> IPX: could not set socket option for type: Permission denied.
> IPX: GetLocalTarget failed.
Very good, now please try this
patch and log again:)
Sorry, I don't have a testcase
for that problem, but eventually
this might be ended...

[-- Attachment #2: ipx_root.diff --]
[-- Type: text/plain, Size: 2172 bytes --]

--- src/dosext/net/net/ipx.c Fri Jul 19 02:04:37 2002
+++ src/dosext/net/net/ipx.c Thu Aug 1 17:30:44 2002
@@ -443,18 +443,6 @@
}

opt = 1;
- /* turn on socket debugging */
- if (debug_level('n')) {
- enter_priv_on();
- if (setsockopt(sock, SOL_SOCKET, SO_DEBUG, &opt, sizeof(opt)) == -1) {
- leave_priv_setting();
- n_printf("IPX: could not set socket option for debugging: %s.\n", strerror(errno));
- /* I can't think of anything else to return */
- return (RCODE_SOCKET_TABLE_FULL);
- }
- leave_priv_setting();
- }
- opt = 1;
/* Permit broadcast output */
enter_priv_on();
if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST,
--- src/dosext/net/net/ipxglt.c Tue Mar 19 19:45:49 2002
+++ src/dosext/net/net/ipxglt.c Fri Aug 2 16:29:20 2002
@@ -107,21 +107,16 @@
leave_priv_setting();
if(sock==-1)
{
+ n_printf("IPX: could not open IPX socket: %s.\n", strerror(errno));
goto GLTExit;
}

- /* Socket debugging */
enter_priv_on();
- if(setsockopt(sock,SOL_SOCKET,SO_DEBUG,&opt,sizeof(opt))==-1)
- {
- leave_priv_setting();
- goto CloseGLTExit;
- }
-
/* Permit broadcast output */
if(setsockopt(sock,SOL_SOCKET,SO_BROADCAST, &opt,sizeof(opt))==-1)
{
leave_priv_setting();
+ n_printf("IPX: could not set socket option for broadcast: %s.\n", strerror(errno));
goto CloseGLTExit;
}

@@ -130,9 +125,10 @@

opt=4; /* Remember no htons! - its a byte */

- if(setsockopt(sock,SOL_SOCKET,IPX_TYPE,&opt,sizeof(opt))==-1)
+ if (setsockopt(sock, SOL_IPX, IPX_TYPE, &opt, sizeof(opt)) == -1)
{
leave_priv_setting();
+ n_printf("IPX: could not set socket option for type: %s.\n", strerror(errno));
goto CloseGLTExit;
}

@@ -143,6 +139,7 @@
if(bind(sock,(struct sockaddr *)&ipxs,sizeof(ipxs))==-1)
{
leave_priv_setting();
+ n_printf("IPX: could not bind socket to address: %s\n", strerror(errno));
goto CloseGLTExit;
}
leave_priv_setting();
@@ -172,6 +169,7 @@
{
leave_priv_setting();
retCode = -2;
+ n_printf("IPX: sendto() failed: %s\n", strerror(errno));
goto CloseGLTExit;
}
leave_priv_setting();