You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Leif Hedstrom (JIRA)" <ji...@apache.org> on 2011/09/03 00:12:10 UTC

[jira] [Resolved] (TS-941) invalid cast of off_t math to int

     [ https://issues.apache.org/jira/browse/TS-941?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Leif Hedstrom resolved TS-941.
------------------------------

    Resolution: Fixed

> invalid cast of off_t math to int
> ---------------------------------
>
>                 Key: TS-941
>                 URL: https://issues.apache.org/jira/browse/TS-941
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Cache
>    Affects Versions: 3.1.0
>         Environment: Stock debian amd64 2.6.34.7 kernel modified to increase XEN domU max RAM to 96Gb
> Stock build with:
> ./configure --enable-layout=Debian --sysconfdir=/etc/trafficserver --libdir=
> /usr/lib/trafficserver --with-user=root --with-group=root --enable-debug --enabl
> e-static-libts CFLAGS= CXXFLAGS= --enable-wccp
>            Reporter: B Wyatt
>            Assignee: Leif Hedstrom
>             Fix For: 3.1.1
>
>
> iocore/CacheWrite.cc:Vol::evac_range calculates its looping values from 64bit off_t values but stores them in 32bit integers:
> {code:title=CacheWrite.cc#1086711:694-700} 
> int
> Vol::evac_range(off_t low, off_t high, int evac_phase)
> {
>   int s = offset_to_vol_offset(this, low);
>   int e = offset_to_vol_offset(this, high);
>   int si = dir_offset_evac_bucket(s);
>   int ei = dir_offset_evac_bucket(e);
> {code}
> When Vol::start and/or the low high parameters get large enough these loop values become truncated and potentially negative causing a general protection fault as it attempts to access memory addresses below the valid range.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira