[
https://issues.apache.org/jira/browse/TS-4313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15221936#comment-15221936
]
ASF GitHub Bot commented on TS-4313:
------------------------------------
Github user jpeach commented on a diff in the pull request:
https://github.com/apache/trafficserver/pull/542#discussion_r58231677
--- Diff: proxy/hdrs/MIME.cc ---
@@ -473,7 +473,8 @@ mime_hdr_set_accelerator_slotnum(MIMEHdrImpl *mh,
int32_t slot_id, uint32_t slot
inline void
mime_hdr_set_accelerators_and_presence_bits(MIMEHdrImpl *mh, MIMEField
*field)
{
- int slot_id, slot_num;
+ int slot_id;
+ ptrdiff_t slot_num;
--- End diff --
But now you use ``contains()`` you don't need the second check, so it would
be:
```C
if (slot_id != MIME_SLOTID_NONE) {
if (mh->m_first_fblock.contains(field)) {
slot_num = (field - &(mh->m_first_fblock.m_field_slots[0]));
} else {
slot_num = MIME_FIELD_SLOTNUM_UNKNOWN;
}
mime_hdr_set_accelerator_slotnum(mh, slot_id,
MIME_FIELD_SLOTNUM_UNKNOWN);
}
```
> MIMEHdr fails to find header fields
> -----------------------------------
>
> Key: TS-4313
> URL: https://issues.apache.org/jira/browse/TS-4313
> Project: Traffic Server
> Issue Type: Bug
> Components: MIME
> Reporter: Masakazu Kitajo
> Assignee: Masakazu Kitajo
> Fix For: 6.2.0
>
>
> MIMEHdr fails to find a MIMEField occasionally due to improper type
> conversion.
> It happens if the lower 32 bits of addresses of m_field_slots are the same.
> The logic below picks up wrong block.
> mime_hdr_field_slotnum():
> {code}
> for (fblock = &(mh->m_first_fblock); fblock != NULL; fblock = fblock->m_next)
> {
> MIMEField *first = &(fblock->m_field_slots[0]);
> int block_slot = (int)(field - first); // in units of MIMEField
> if ((block_slot >= 0) && (block_slot < MIME_FIELD_BLOCK_SLOTS))
> {code}
> The type of block_slot should be intptr_t.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)