Project

General

Profile

Bug #6623

validate the memptr bytes in "copy-lob from memptr to clob/longchar" statement

Added by Constantin Asofiei almost 2 years ago. Updated almost 2 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:
version:

Related issues

Related to Database - Feature #6457: finish COPY-LOB support WIP
Related to Base Language - Feature #4768: finish copy-lob support Closed

History

#2 Updated by Constantin Asofiei almost 2 years ago

According to https://knowledgebase.progress.com/articles/Article/P110518 , COPY-LOB will try to translate the memptr bytes to the target's codepage. If bytes can't be translated to the target codepage char, then invalid character code found in data for codepage %1 (12008) ERROR is raised. A sample is this, where '\0' null char shows this problem:

def temp-table tt1 no-undo field f1 as clob.
def var m as memptr.
def var i as int.

create tt1.
set-size(m) = 10.
do i = 1 to 9:
   put-byte(m, i) = i.
end.

copy-lob from m to tt1.f1.

Currently, I18nOps.prevalidateData checks for null chars only for ISO-88591 codepage, but this seems to apply for any codepage (including win1252). This needs a proper fix to pre-validate the entire bytes using the target codepage.

prowin -cpinternal 1252 can be used to run the test with 1252 or other codepages.

#3 Updated by Greg Shah almost 2 years ago

#4 Updated by Greg Shah almost 2 years ago

Also available in: Atom PDF