RFR JDK-8005120

Dmitry Samersoff dmitry.samersoff at oracle.com
Wed Dec 19 12:35:47 PST 2012


John,

On 2012-12-19 23:33, John Zavgren wrote:
> Dmitry:
> Are you suggesting that in the definition of, for example, dbgsysConnect(), we convert the namelen argument to be a socklen_t? 

The best approach IMHO, is

dbgsysConnect(int fd, struct sockaddr *name, socklen_t namelen)

and change
share/transport/socket/socketTransport.c:462

err = dbgsysConnect(socketFD, (struct sockaddr *)&sa, sizeof(sa));

to

err = dbgsysConnect(socketFD, (struct sockaddr *)&sa,
                       (socklen_t) sizeof(sa));

-Dmitry

> 
> 
> int
> dbgsysConnect(int fd, struct sockaddr *name, uint32_t namelen) {
>     int rv = connect(fd, name, (socklen_t)nameLength);<--- NEW
>     if (rv < 0 && (errno == EINPROGRESS || errno == EINTR)) {
>         return DBG_EINPROGRESS;
>     } else {
>         return rv;
>     }
> }
> Thanks!
> John
> ----- Original Message -----
> From: dmitry.samersoff at oracle.com
> To: john.zavgren at oracle.com
> Cc: net-dev at openjdk.java.net
> Sent: Wednesday, December 19, 2012 1:40:11 PM GMT -05:00 US/Canada Eastern
> Subject: Re: RFR JDK-8005120
> 
> John,
> 
> On 2012-12-19 22:25, John Zavgren wrote:
>> Yes... I did consider that, but I didn't see any POSIX data types near the code I was changing, so I decided to use a "brute force" data type instead.
> 
> connect, recvfrom etc almost always uses socklen_t, but socklen_t could
> expands either to int or to unsigned it on different OS
> 
> so as soon as the code pass a parameter directly to one of such
> functions like e. g.
> 
>   52  dbgsysConnect(int fd, struct sockaddr *name, uint32_t namelen) {
>   53     int rv = connect(fd, name, namelen);
> 
> on my opinion, we should use socklen_t
> 
> -Dmitry
> 
>>
>> Shall I make that change?
>>
>> John
>> ----- Original Message -----
>> From: dmitry.samersoff at oracle.com
>> To: john.zavgren at oracle.com
>> Cc: net-dev at openjdk.java.net
>> Sent: Wednesday, December 19, 2012 1:06:52 PM GMT -05:00 US/Canada Eastern
>> Subject: Re: RFR JDK-8005120
>>
>> John,
>>
>> Did you consider using socklen_t instead of uint32_t and unsigned int
>> (for namelen etc) ?
>>
>> -Dmitry
>>
>>
>> On 2012-12-19 19:36, John Zavgren wrote:
>>> Greetings:
>>> Please consider the following change to the two files:
>>> src/share/transport/socket/sysSocket.h
>>> src/solaris/transport/socket/socket_md.c
>>> that eliminate compiler warnings that stem from the fact that the variables that the native code passes to various system calls were not declared correctly. They were declared as integers, but they must be "unsigned" integers because they are used to define buffer lengths. Were one to supply a negative value as an argument, it would be cast into an unsigned "Martian" value and there'd be (hopefully) a system call error.
>>>
>>> Thanks!
>>> John Zavgren
>>>
>>> http://cr.openjdk.java.net/~mullan/webrevs/jzavgren/8005120/
>>>
>>
>>
> 
> 


-- 
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* Give Rabbit time, and he'll always get the answer



More information about the net-dev mailing list