From unknown Sun Apr 05 18:00:36 2026
X-Loop: owner@bugs.x2go.org
Subject: Bug#515: [X2Go-Dev] [X2Go-User] "connectedHost" variable contains wrong IP, reason unknown
Reply-To: Mihai Moldovan <ionic@ionic.de>, 515@bugs.x2go.org
Resent-From: Mihai Moldovan <ionic@ionic.de>
Resent-To: x2go-dev@lists.x2go.org
Resent-CC: X2Go Developers <x2go-dev@lists.x2go.org>
X-Loop: owner@bugs.x2go.org
Resent-Date: Sat, 14 Jun 2014 01:45:02 +0000
Resent-Message-ID: <handler.515.B515.140271000828615@bugs.x2go.org>
Resent-Sender: owner@bugs.x2go.org
X-X2Go-PR-Message: followup 515
X-X2Go-PR-Package: x2goagent
X-X2Go-PR-Keywords: 
Received: via spool by 515-submit@bugs.x2go.org id=B515.140271000828615
          (code B ref 515); Sat, 14 Jun 2014 01:45:02 +0000
Received: (at 515) by bugs.x2go.org; 14 Jun 2014 01:40:08 +0000
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on
	ymir.das-netzwerkteam.de
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID,
	URIBL_BLOCKED autolearn=ham version=3.3.2
Received: from Root24.de (powered.by.root24.eu [91.121.15.64])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTP id EE3BC5DB11
	for <515@bugs.x2go.org>; Sat, 14 Jun 2014 03:40:06 +0200 (CEST)
Received: from nopileos.local (home.ionic.de [85.183.67.131])
	by Root24.de (Postfix) with ESMTPSA id 5452D3B005C9;
	Sat, 14 Jun 2014 03:40:06 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ionic.de; s=default;
	t=1402710006; bh=xyCAQ7OQWn6ZZ9EXWNyJgH+yaxb1zCHO3FQOtqNiQW4=;
	h=Date:From:To:CC:Subject:References:In-Reply-To:From;
	b=vpC+gh+Q7ALX1unW62JsHSflkjkMaSyF1v3yLX6OwOtwgZv+iKHKJPyHJiOp+9wZ4
	 rBrqLNA+cWJnCtOkpH04nz/ICeiYYxUtq3N1iALeJ3MybIgRMirUZSVsb0hORPaofY
	 rI5/D5ILV5Zl36/xFbM5FQ7lLqrVwbQPuF1/xaWA=
Message-ID: <539BA7F7.5070002@ionic.de>
Date: Sat, 14 Jun 2014 03:40:07 +0200
From: Mihai Moldovan <ionic@ionic.de>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: 515@bugs.x2go.org
CC: sebastien chabrolles <s.chabrolles@fr.ibm.com>
References: <OF63CDD2EA.AB0207C6-ONC1257CF4.0033135B-C1257CF4.0039D4E6@fr.ibm.com> <20140611113037.Horde.qsAKjfq9P_p1svkMBI8Mtg1@mail.das-netzwerkteam.de> <539842C3.6010208@stefanbaur.de> <20140611124358.Horde.3fgisOaRzDKMd2835Ld1uA4@mail.das-netzwerkteam.de> <5398CE20.4090601@stefanbaur.de> <5398E061.6010000@gmail.com> <5399D7CC.9010408@ionic.de> <OF47115B4E.4B401215-ONC1257CF5.005EFDAE-C1257CF5.005FFA1D@fr.ibm.com> <539A0414.7040805@ionic.de> <539B239F.1060401@ionic.de> <539B87A3.3060801@ionic.de> <539B9FBE.2080200@ionic.de>
In-Reply-To: <539B9FBE.2080200@ionic.de>
X-Enigmail-Version: 1.6
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms080208060800010108080404"

This is a cryptographically signed message in MIME format.

--------------ms080208060800010108080404
Content-Type: multipart/mixed;
 boundary="------------070202020400020301060201"

This is a multi-part message in MIME format.
--------------070202020400020301060201
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Basically, the addresses Sebastien has seen were "nothing more" than
uninitialized memory.

The underlaying issue was that accept() wants a socklen_t *addrlen parame=
ter.
The original code created a size_t variable to store the size of the sock=
addr
structure where information like the IP address is to be written. This va=
lue has
been, correctly, set to 16. It was then casted to (socklen_t) and given t=
o accept().

The problem, however, is that socklen_t is defined as a 4 byte integer, w=
hile
size_t is at least 8 bytes wide on ppc64. (I highly recommend reading man=
 2
accept and the in the man page included Linus Torvald rant on that matter=
!)

This is "not a big deal" on little endian machines, as casting size_t to
socklen_t there will only cut the upper 4 bytes off and leave you with th=
e lower
4 bytes -- which is just fine, as struct sockaddr isn't bigger than 2^32-=
1 bytes
anyway. 16 stays 16 in that case.

Doing the same thing on big endian machines, however, cuts the lower 4 by=
tes off
and leaves you with the upper 4 bytes. As the original value was "16", th=
e upper
4 bytes were all zero.

Thus, zero was passed as the addrlen parameter to accept().

As the addrlen parameter defines how many bytes may be written to the soc=
kaddr
structure given to accept(), the function didn't even touch addr. Hence, =
addr
was left in its original, un-initialized state.

It was an endianness issue after all, but not exactly where anyone would =
have
expected it.

The fix is trivial -- don't use size_t as the type of the addrlen variabl=
e, but
socklen_t, which will also remove the need of casting.


Mike: I hope the patch applies fine. I have quiltimported all other patch=
es
before, so my patch is based on the patched nx-libs repository.

--------------070202020400020301060201
Content-Type: text/plain; charset=UTF-8;
 name="nx-libs-ppc64.diff"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
 filename="nx-libs-ppc64.diff"

diff --git a/nxcomp/Loop.cpp b/nxcomp/Loop.cpp
index c9617c3..955be85 100644
--- a/nxcomp/Loop.cpp
+++ b/nxcomp/Loop.cpp
@@ -6854,9 +6854,9 @@ int WaitForRemote(int portNum)
     {
       sockaddr_in newAddr;
=20
-      size_t addrLen =3D sizeof(sockaddr_in);
+      socklen_t addrLen =3D sizeof(sockaddr_in);
=20
-      newFD =3D accept(proxyFD, (sockaddr *) &newAddr, (socklen_t *) &ad=
drLen);
+      newFD =3D accept(proxyFD, (sockaddr *) &newAddr, &addrLen);
=20
       if (newFD =3D=3D -1)
       {

--------------070202020400020301060201--

--------------ms080208060800010108080404
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIMkTCC
BjQwggQcoAMCAQICASAwDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoT
DVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNp
Z25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA3
MTAyNDIxMDI1NVoXDTE3MTAyNDIxMDI1NVowgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1T
dGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWdu
aW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAyIFByaW1hcnkgSW50ZXJtZWRpYXRlIENs
aWVudCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMsohUWcASz7GfKrpTOM
KqANy9BV7V0igWdGxA8IU77L3aTxErQ+fcxtDYZ36Z6GH0YFn7fq5RADteP0AYzrCA+EQTfi
8q1+kA3m0nwtwXG94M5sIqsvs7lRP1aycBke/s5g9hJHryZ2acScnzczjBCAo7X1v5G3yw8M
DP2m2RCye0KfgZ4nODerZJVzhAlOD9YejvAXZqHksw56HzElVIoYSZ3q4+RJuPXXfIoyby+Y
2m1E+YzX5iCZXBx05gk6MKAW1vaw4/v2OOLy6FZH3XHHtOkzUreG//CsFnB9+uaYSlR65cdG
zTsmoIK8WH1ygoXhRBm98SD7Hf/r3FELNvUCAwEAAaOCAa0wggGpMA8GA1UdEwEB/wQFMAMB
Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSuVYNv7DHKufcd+q9rMfPIHeOsuzAfBgNV
HSMEGDAWgBROC+8apEBbpRdphzDKNGhD0EGu8jBmBggrBgEFBQcBAQRaMFgwJwYIKwYBBQUH
MAGGG2h0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9jYTAtBggrBgEFBQcwAoYhaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6AloCOGIWh0dHA6Ly93d3cu
c3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20v
c2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysGAQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwDQYJKoZIhvcNAQEFBQADggIBADqp
Jw3I07QWke9plNBpxUxcffc7nUrIQpJHDci91DFG7fVhHRkMZ1J+BKg5UNUxIFJ2Z9B90Mic
c/NXcs7kPBRdn6XGO/vPc87Y6R+cWS9Nc9+fp3Enmsm94OxOwI9wn8qnr/6o3mD4noP9Jphw
UPTXwHovjavRnhUQHLfo/i2NG0XXgTHXS2Xm0kVUozXqpYpAdumMiB/vezj1QHQJDmUdPYMc
p+reg9901zkyT3fDW/ivJVv6pWtkh6Pw2ytZT7mvg7YhX3V50Nv860cV11mocUVcqBLv0gcT
+HBDYtbuvexNftwNQKD5193A7zN4vG7CTYkXxytSjKuXrpEatEiFPxWgb84nVj25SU5q/r1X
hwby6mLhkbaXslkVtwEWT3Van49rKjlK4XrUKYYWtnfzq6aSak5u0Vpxd1rY79tWhD3EdCvO
hNz/QplNa+VkIsrcp7+8ZhP1l1b2U6MaxIVteuVMD3X0vziIwr7jxYae9FZjbxlpUemqXjcC
0QaFfN7qI0JsQMALL7iGRBg7K0CoOBzECdD3fuZil5kU/LP9cr1BK31U0Uy651bFnAMMMkqh
AChIbn0ei72VnbpSsrrSdF0BAGYQ8vyHae5aCg+H75dVCV33K6FuxZrf09yTz+Vx/PkdRUYk
XmZz/OTfyJXsUOUXrym6KvI2rYpccSk5MIIGVTCCBT2gAwIBAgICR5UwDQYJKoZIhvcNAQEL
BQAwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJT
ZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBD
bGFzcyAyIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQTAeFw0xNDAzMTkwNDMzMzFa
Fw0xNjAzMTgxNTIzMjJaMHYxCzAJBgNVBAYTAkRFMRswGQYDVQQIExJCYWRlbi1XdWVydHRl
bWJlcmcxEjAQBgNVBAcTCUthcmxzcnVoZTEXMBUGA1UEAxMOTWloYWkgTW9sZG92YW4xHTAb
BgkqhkiG9w0BCQEWDmlvbmljQGlvbmljLmRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAy1U08dzMfc3SpuUBHL+ZgUQJs4gX7DLBAr89BAoQkIEkMhlEGJ1OGBqvbOuGBlyd
l/BSa/vrkTFqrHjxs4UhYG/nide97RsalQ39eolmd/WSn1I0M3Ohg/LAnCt2v9mMx1Sx8QpE
jzLVvdMwO4mEJWH4+w8e8bLLIzN66/rAuD0EVeyWJh6pggCjI+Y59t0aqI7vzjcqgJGtmwHZ
VPtBhWP3jsDUhLjwxUeydFEwteh/fpo3czx4aKKMH0K53HHGfGZHl5IK/E8ZdL+veF4JSRs5
nCKAikwbtua3sMY1ejPRc2L5CyZAJvmfaKjBCi5/3j/DxYrEK+sH32AYUxbgYQIDAQABo4IC
1DCCAtAwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMEMB0GA1UdDgQWBBSaZelU6HGlOzMKCINjBgsaA/nXxTAfBgNVHSMEGDAWgBSuVYNv
7DHKufcd+q9rMfPIHeOsuzAZBgNVHREEEjAQgQ5pb25pY0Bpb25pYy5kZTCCAUwGA1UdIASC
AUMwggE/MIIBOwYLKwYBBAGBtTcBAgMwggEqMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0
YXJ0c3NsLmNvbS9wb2xpY3kucGRmMIH3BggrBgEFBQcCAjCB6jAnFiBTdGFydENvbSBDZXJ0
aWZpY2F0aW9uIEF1dGhvcml0eTADAgEBGoG+VGhpcyBjZXJ0aWZpY2F0ZSB3YXMgaXNzdWVk
IGFjY29yZGluZyB0byB0aGUgQ2xhc3MgMiBWYWxpZGF0aW9uIHJlcXVpcmVtZW50cyBvZiB0
aGUgU3RhcnRDb20gQ0EgcG9saWN5LCByZWxpYW5jZSBvbmx5IGZvciB0aGUgaW50ZW5kZWQg
cHVycG9zZSBpbiBjb21wbGlhbmNlIG9mIHRoZSByZWx5aW5nIHBhcnR5IG9ibGlnYXRpb25z
LjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9jcnR1Mi1jcmwu
Y3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNz
bC5jb20vc3ViL2NsYXNzMi9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6Ly9haWEuc3Rh
cnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczIuY2xpZW50LmNhLmNydDAjBgNVHRIEHDAahhho
dHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQELBQADggEBAH650RIseEtEpaRd
Av66u9KEu5mxHpRH8IopkCkwGBk95sSKSWVqJ6XbTHywi66GAqQ7LPlD5ittkhTlYtyst8vb
FLaafu6Ous2UDZhqJH1NHfRaG6m0Qt2Zm7KQsaxIhBEYFqqMxSq2E8DQU6WUB473bEqToVx+
pumW+T/KSnHq+FfCGSPvXtwkRP4eiJmvNPZKhGRk3RPkT3LzA380mX6DpcqEQ1a8TmsFBZ7c
AMa7KKDe4YnxDFSE/2C1WA5bibpmkCGa+R/0KBBWxDrzNUv6W8Ui6OzpkHTaqg+c9NpC1wDl
xt3r8GaytqtcHfB2VEbPd0Hrd+zrDh3co8/SkqgxggPaMIID1gIBATCBkzCBjDELMAkGA1UE
BhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFs
IENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFy
eSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBAgJHlTAJBgUrDgMCGgUAoIICGzAYBgkqhkiG9w0B
CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNDA2MTQwMTQwMDdaMCMGCSqGSIb3
DQEJBDEWBBQSghx364KkH2JU1IDFzV2JHM7eITBsBgkqhkiG9w0BCQ8xXzBdMAsGCWCGSAFl
AwQBKjALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3
DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGkBgkrBgEEAYI3EAQxgZYwgZMwgYwx
CzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUg
RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAy
IFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQICR5UwgaYGCyqGSIb3DQEJEAILMYGW
oIGTMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20g
Q2xhc3MgMiBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAkeVMA0GCSqGSIb3DQEB
AQUABIIBADZuBqQ2umUroVrl8SSFkS5RBIEvckdgzkXN/rhD4kolKPUVQ0oMprlBxz1F+jUl
GekantO9sONgpCKghFrIzARLKsZwjAhs2qA2WGc09IoA/+FczFWQV1aBG0gHkOsp4mHZ1z4L
mk1gctKZ/2dMZZuLtEUan60hQKpf6/6qYUR88JpjIY6zsJrmSd74B4bV13sfjLufUaXnJ/ul
baQJr7qsdYYS125q+rnNiARL1YdieEmAlNt+DrkWeyU5qqvUr9O/IkRNImXME6OshnRgAvCf
x3e/mktyIi9gOoe6MAVhMsUMhFJ0HKsvLHL6p4cmo2YFPhtJFa1YJuh4deORHl8AAAAAAAA=
--------------ms080208060800010108080404--
