<AWT Dev> [OpenJDK 2D-Dev] RFR(M): 8170525: Fix minor issues in awt coding
Philip Race
philip.race at oracle.com
Tue Dec 6 03:20:42 UTC 2016
I didn't eyeball what you changed but JPRT is now happy.
The build passes on all platforms...
-phil.
On 12/5/16, 2:47 PM, Lindenmaier, Goetz wrote:
> Hi Phil,
>
> sorry for that! I fixed it, there is an other occurrence, too.
> I double checked all the casts, there was also a mp_flags<-> mp_sign wrong in mpi.c
> http://cr.openjdk.java.net/~goetz/wr16/8170525-awt-dev/webrev.05/
> (Also rebased the change)
>
> Best regards,
> Goetz
>
>> -----Original Message-----
>> From: Phil Race [mailto:philip.race at oracle.com]
>> Sent: Monday, December 05, 2016 7:26 PM
>> To: Lindenmaier, Goetz<goetz.lindenmaier at sap.com>; Sergey Bylokhov
>> <Sergey.Bylokhov at oracle.com>
>> Cc: awt-dev at openjdk.java.net; 2d-dev<2d-dev at openjdk.java.net>
>> Subject: Re: [OpenJDK 2D-Dev]<AWT Dev> RFR(M): 8170525: Fix minor
>> issues in awt coding
>>
>> I tried it .. and just as well I did. It fails in the crypto code on Mac.
>>
>> jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c:261:12: error:
>> expression which evaluates to zero treated as a null pointer constant of type
>> 'mp_digit *' (aka 'unsigned long *') [-Werror,-Wnon-literal-null-conversion]
>> k.dp = (mp_digit)0;
>> ^~~~~~~~~~~
>> 1 error generated.
>>
>> -phil.
>>
>>
>>
>> On 12/3/2016 9:53 AM, Lindenmaier, Goetz wrote:
>>> Hi Phil,
>>>
>>> that would be great, unfortunately I don't have access to JPRT.
>>>
>>> Thanks,
>>> Goetz.
>>>
>>>> -----Original Message-----
>>>> From: Phil Race [mailto:philip.race at oracle.com]
>>>> Sent: Friday, December 02, 2016 8:46 PM
>>>> To: Lindenmaier, Goetz<goetz.lindenmaier at sap.com>; Sergey Bylokhov
>>>> <Sergey.Bylokhov at oracle.com>
>>>> Cc: awt-dev at openjdk.java.net; 2d-dev<2d-dev at openjdk.java.net>
>>>> Subject: Re: [OpenJDK 2D-Dev]<AWT Dev> RFR(M): 8170525: Fix minor
>>>> issues in awt coding
>>>>
>>>> I had no other comments, except that it would be good to be sure
>>>> that this builds on all relevant platforms .. using the 'blessed' compilers.
>>>> If you like I can submit a JPRT job for you based on this patch.
>>>>
>>>> -phil.
>>>>
>>>> On 12/01/2016 11:58 PM, Lindenmaier, Goetz wrote:
>>>>> Hi Phil,
>>>>>
>>>>> I added the initialization to the other function.
>>>>> http://cr.openjdk.java.net/~goetz/wr16/8170525-awt-dev/webrev.04/
>>>>>
>>>>> I missed that because Coverity didn't complain.
>>>>> It's not a perfect tool, but it finds sufficient issues
>>>>> to make it worthwhile. Is the other awt code fine?
>>>>>
>>>>> Best regards,
>>>>> Goetz.
>>>>>
>>>>>
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Phil Race [mailto:philip.race at oracle.com]
>>>>>> Sent: Donnerstag, 1. Dezember 2016 22:31
>>>>>> To: Lindenmaier, Goetz<goetz.lindenmaier at sap.com>; Sergey
>> Bylokhov
>>>>>> <Sergey.Bylokhov at oracle.com>; Vincent Ryan
>>>> <vincent.x.ryan at oracle.com>
>>>>>> Cc: awt-dev at openjdk.java.net; 2d-dev<2d-dev at openjdk.java.net>;
>>>> security-
>>>>>> dev at openjdk.java.net
>>>>>> Subject: Re: [OpenJDK 2D-Dev]<AWT Dev> RFR(M): 8170525: Fix minor
>>>> issues
>>>>>> in awt coding
>>>>>>
>>>>>> Sorry. it is
>>>>>> ops->GetRasInfo(env, ops, lockInfo);
>>>>>> that initialises it ..
>>>>>>
>>>>>>
>>>>>> That is still before the dereference
>>>>>> Anyway, what was the reason for updating one function, but not the
>>>> other.
>>>>>> I don't mind the change, but the inconsistency looks odd.
>>>>>>
>>>>>> -phil.
>>>>>>
>>>>>> On 12/01/2016 03:03 AM, Lindenmaier, Goetz wrote:
>>>>>>> Hi Phil,
>>>>>>>
>>>>>>>> Did you actually compile this ? The variable is called "rasBase", not
>>>>>>>> "resBase".
>>>>>>> Yes, I compiled it, and I fixed the error, but that was another repo
>>>>>>> I use for the coverity checks. Somehow it did not find its way into
>>>>>>> the webrev.
>>>>>>>
>>>>>>> I don't see where ops->Lock() initializes this field.
>>>>>>> ops->GetRasInfo(env, ops, lockInfo); does so if it resolves
>>>>>>> to BufImg_GetRasInfo(). I can't look in our code scan results
>>>>>>> because the issue is gone after fixing it, that lists the path
>>>>>>> of execution that leads to the issue.
>>>>>>> If you are sure this is correct I will remove the initialization,
>>>>>>> else I will also put it into the other method.
>>>>>>>
>>>>>>> DBN_GetPixelPointer checks lockInfo->rasBase for NULL and
>>>>>>> does what looks like the error case if it's NULL. Therefore NULL
>>>>>>> seemed a good initialization to me.
>>>>>>>
>>>>>>> Best regards,
>>>>>>> Goetz.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Phil Race [mailto:philip.race at oracle.com]
>>>>>>>> Sent: Mittwoch, 30. November 2016 20:59
>>>>>>>> To: Sergey Bylokhov<Sergey.Bylokhov at oracle.com>; Lindenmaier,
>>>> Goetz
>>>>>>>> <goetz.lindenmaier at sap.com>; Vincent Ryan
>>>> <vincent.x.ryan at oracle.com>
>>>>>>>> Cc: awt-dev at openjdk.java.net; 2d-dev<2d-dev at openjdk.java.net>;
>>>> security-
>>>>>>>> dev at openjdk.java.net
>>>>>>>> Subject: Re: [OpenJDK 2D-Dev]<AWT Dev> RFR(M): 8170525: Fix
>> minor
>>>>>> issues
>>>>>>>> in awt coding
>>>>>>>>
>>>>>>>> Hi Goetz,
>>>>>>>>
>>>>>>>>> DataBufferNative.c
>>>>>>>>> Using uninitialized value lockInfo.rasBase when calling
>>>>>> DBN_GetPixelPointer.
>>>>>>>> 75 lockInfo.resBase = NULL;
>>>>>>>>
>>>>>>>> Did you actually compile this ? The variable is called "rasBase", not
>>>>>>>> "resBase".
>>>>>>>>
>>>>>>>> And strictly there is no problem since inside DBN_GetPixelPointer
>>>>>>>> the code calls ops->Lock which should initialise this.
>>>>>>>> A "rasBase" of 0 isn't really any better than a random one ..
>>>>>>>>
>>>>>>>> Also I don't see why there's a problem here and not in
>>>>>>>> the function immediately following since it is the exact same case.
>>>>>>>>
>>>>>>>> -phil.
>>>>>>>>
>>>>>>>> On 11/30/2016 10:00 AM, Sergey Bylokhov wrote:
>>>>>>>>> cc 2d-dev.
>>>>>>>>>
>>>>>>>>> On 30.11.16 18:41, Lindenmaier, Goetz wrote:
>>>>>>>>>> Hi Vincent,
>>>>>>>>>>
>>>>>>>>>> thanks for the quit review!
>>>>>>>>>> Good catch that I lost the change to p11_mutex.c ... I had to
>> change
>>>>>>>>>> it and it fell out of my patches.
>>>>>>>>>> I edited the Last Modified Date, and also updated the copyright
>>>>>>>>>> messages.
>>>>>>>>>> New webrev:
>>>>>>>>>> http://cr.openjdk.java.net/~goetz/wr16/8170525-awt-dev/
>>>>>>>>>>
>>>>>>>>>> Best regards,
>>>>>>>>>> Goetz.
>>>>>>>>>>
>>>>>>>>>> (Am I correct that your openJdk name is Vinnie?)
>>>>>>>>>>
>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>> From: Vincent Ryan [mailto:vincent.x.ryan at oracle.com]
>>>>>>>>>>> Sent: Mittwoch, 30. November 2016 14:53
>>>>>>>>>>> To: Lindenmaier, Goetz<goetz.lindenmaier at sap.com>
>>>>>>>>>>> Cc: awt-dev at openjdk.java.net; security-dev at openjdk.java.net
>>>>>>>>>>> Subject: Re: RFR(M): 8170525: Fix minor issues in awt coding
>>>>>>>>>>>
>>>>>>>>>>> Hello Goetz,
>>>>>>>>>>>
>>>>>>>>>>> Please modify the bug summary to reference ECC too.
>>>>>>>>>>> Your ECC changes look fine but the ‘Last Modified Date’ line in
>> the
>>>>>>>>>>> 4 source
>>>>>>>>>>> code headers will need to be updated/added.
>>>>>>>>>>>
>>>>>>>>>>> BTW p11_mutex.c is listed below but appears to be missing from
>>>> the
>>>>>>>>>>> webrev.
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 30 Nov 2016, at 13:12, Lindenmaier, Goetz
>>>>>>>>>>> <goetz.lindenmaier at sap.com
>>>> <mailto:goetz.lindenmaier at sap.com> >
>>>>>>>> wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I’d like to propose a row of smaller fixes where code is noted
>>>>>>>>>>> down a
>>>>>>>>>>> bit questionable.
>>>>>>>>>>> SAP’s quality process requires that we fix these in our internal
>>>>>>>>>>> delivery,
>>>>>>>>>>> and I
>>>>>>>>>>> Would like to share my fixes with openJdk. Some of these
>> fixes
>>>>>>>>>>> are of
>>>>>>>>>>> more
>>>>>>>>>>> theoretical nature as how I understand the code paths never
>>>>>>>>>>> allow the
>>>>>>>>>>> problematic situation, but fixing it nevertheless assures that
>>>>>>>>>>> nothing is
>>>>>>>>>>> overseen if the code changes. Most changes are in
>> libawt_xawt,
>>>>>>>>>>> some
>>>>>>>>>>> are in libsunec.
>>>>>>>>>>>
>>>>>>>>>>> I’d appreciate a review:
>>>>>>>>>>> http://cr.openjdk.java.net/~goetz/wr16/8170525-
>>>> awt/webrev.01/
>>>>>>>>>>> Changes in detail:
>>>>>>>>>>>
>>>>>>>>>>> awt_InputMethod.c:
>>>>>>>>>>>
>>>>>>>>>>> One might overrun the 100 byte fixed-size string
>>>>>>>>>>> statusWindow->status
>>>>>>>>>>> by copying text->string.multi_byte without checking the length.
>>>>>>>>>>>
>>>>>>>>>>> gtk3_interface.c:
>>>>>>>>>>>
>>>>>>>>>>> This less-than-zero comparison of an unsigned value is never
>>>> true.
>>>>>>>>>>> Using uninitialized value color. Field color.alpha is
>>>>>>>>>>> uninitialized.
>>>>>>>>>>> E.g. used at gtk3_interface.c:2287.
>>>>>>>>>>>
>>>>>>>>>>> XToolkit.c
>>>>>>>>>>>
>>>>>>>>>>> Using uninitialized value ret_timeout.
>>>>>>>>>>> E.g. in XToolkit.c:6809.
>>>>>>>>>>>
>>>>>>>>>>> XWindow.c
>>>>>>>>>>>
>>>>>>>>>>> Argument is incompatible with corresponding format string
>>>>>>>>>>> conversion.
>>>>>>>>>>>
>>>>>>>>>>> splashscreen_sys.c
>>>>>>>>>>>
>>>>>>>>>>> Overflowed or truncated value (or a value computed from an
>>>>>>>>>>> overflowed or truncated value) (gdk_scale> 0) ? native_scale *
>>>>>>>>>>> (double)gdk_scale : native_scale used as return value.
>>>>>>>>>>>
>>>>>>>>>>> ec.c
>>>>>>>>>>>
>>>>>>>>>>> Using uninitialized value k.dp when calling mp_clear.
>>>>>>>>>>>
>>>>>>>>>>> ecdecode.c
>>>>>>>>>>>
>>>>>>>>>>> You might overrun the 291 byte fixed-size string genenc by
>>>> copying
>>>>>>>>>>> curveParams->geny without checking the length.
>>>>>>>>>>> Added sanity check before doing the string concatenation.
>>>>>>>>>>>
>>>>>>>>>>> ecl_mult.c
>>>>>>>>>>>
>>>>>>>>>>> Using uninitialized value kt.flag when calling
>>>>>>>>>>> *group->point_mul. (The
>>>>>>>>>>> function pointer resolves to ec_GF2m_pt_mul_mont.)
>>>>>>>>>>>
>>>>>>>>>>> mpi.c
>>>>>>>>>>>
>>>>>>>>>>> Using uninitialized value s. Field s.flag is uninitialized when
>>>>>>>>>>> calling
>>>>>>>>>>> s_mp_exch.
>>>>>>>>>>> Using uninitialized value tmp. Field tmp.flag is uninitialized
>> when
>>>>>>>>>>> calling s_mp_exch
>>>>>>>>>>> Using uninitialized value t.dp when calling mp_clear.
>>>>>>>>>>>
>>>>>>>>>>> p11_mutex.c
>>>>>>>>>>>
>>>>>>>>>>> Using uninitialized value *ckpInitArgs. Field ckpInitArgs->flags
>> is
>>>>>>>>>>> uninitialized when calling memcpy.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> DataBufferNative.c
>>>>>>>>>>>
>>>>>>>>>>> Using uninitialized value lockInfo.rasBase when calling
>>>>>>>>>>> BN_GetPixelPointer.
>>>>>>>>>>>
>>>>>>>>>>> fontpath.c
>>>>>>>>>>>
>>>>>>>>>>> You might overrun the 512 byte fixed-size string fontDirPath
>> by
>>>>>>>>>>> copying
>>>>>>>>>>> DirP->name[index] without checking the length.
>>>>>>>>>>>
More information about the awt-dev
mailing list