diff --git a/cde/lib/tt/bin/ttdbserverd/tt_isam_record.C b/cde/lib/tt/bin/ttdbserverd/tt_isam_record.C index 75c18b91e..5d635e2ee 100644 --- a/cde/lib/tt/bin/ttdbserverd/tt_isam_record.C +++ b/cde/lib/tt/bin/ttdbserverd/tt_isam_record.C @@ -159,5 +159,18 @@ void _Tt_isam_record::setBytes (int start, int length, const _Tt_string &value) { - (void)memcpy((char *)buffer+start, (char *)value, length); + // JET - CERT vulnerability: VU#387387 - value is user supplied. + // Geez. + int bavail = (maxLength - start); + int bcp = 0; + + if (bavail <= 0) + return; + + if (bavail > length) + bcp = length; + else + bcp = bavail; + + (void)memcpy((char *)buffer+start, (char *)value, bcp); }