Further observation: the feature-openssl branch from git does not have
the bus error, test cases run successfully on SPARC





On 18/07/13 19:34, Daniel Pocock wrote:
> On 18/07/13 17:26, John Foley wrote:
>> We've seen BUS errors on some platforms.  I'm not confident the
>> following patch was ever pushed back to libsrtp.  There's a chance this
>> may resolve the problem on sparc.  Unfortunately I don't have a sparc
>> system to try this myself.
>
>
> Thanks for this feedback
>
> The patch doesn't apply - all but one hunk fails
>
> I tried it against the Debian source package and I also tried applying
> it against the repository
>
> https://github.com/cisco/libsrtp
>
> Can you tell me the SVN URL where you got this and I can try checking
> it out and building it?
>
>
>
>
>> Modified: branches/proto/libsrtp_30/srtp/include/srtp.h
>>  ===================================================================
>>  --- branches/proto/libsrtp_30/srtp/include/srtp.h   2013-04-24 19:44:23 UTC 
>> (rev 1292)
>>  +++ branches/proto/libsrtp_30/srtp/include/srtp.h   2013-04-29 14:17:03 UTC 
>> (rev 1293)
>>  @@ -52,6 +52,11 @@
>>   
>>   #ifdef _MSC_VER
>>   #pragma pack(4)
>>  +#define PACK
>>  +#elif defined(__GNUC__)
>>  +#define PACK __attribute__ ((packed))
>>  +#else
>>  +#define PACK
>>   #endif
>>   
>>   #include "crypto_kernel.h"
>>  
>>  Modified: branches/proto/libsrtp_30/srtp/include/srtp_priv.h
>>  ===================================================================
>>  --- branches/proto/libsrtp_30/srtp/include/srtp_priv.h      2013-04-24 
>> 19:44:23 UTC (rev 1292)
>>  +++ branches/proto/libsrtp_30/srtp/include/srtp_priv.h      2013-04-29 
>> 14:17:03 UTC (rev 1293)
>>  @@ -68,7 +68,7 @@
>>    * fully pack the bit fields.
>>    */
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       unsigned char cc : 4;      /* CSRC count             */
>>       unsigned char x : 1;       /* header extension flag  */
>>       unsigned char p : 1;       /* padding flag           */
>>  @@ -82,7 +82,7 @@
>>   
>>   #else /*  BIG_ENDIAN */
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       unsigned char version : 2; /* protocol version    */
>>       unsigned char p : 1;       /* padding flag           */
>>       unsigned char x : 1;       /* header extension flag  */
>>  @@ -96,7 +96,7 @@
>>   
>>   #endif
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       uint16_t profile_specific;  /* profile-specific info               */
>>       uint16_t length;            /* number of 32-bit words in extension */
>>   } srtp_hdr_xtnd_t;
>>  @@ -111,7 +111,7 @@
>>   
>>   #ifndef WORDS_BIGENDIAN
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       unsigned char rc : 5;       /* reception report count */
>>       unsigned char p : 1;        /* padding flag           */
>>       unsigned char version : 2;  /* protocol version       */
>>  @@ -120,7 +120,7 @@
>>       uint32_t ssrc;              /* synchronization source */
>>   } srtcp_hdr_t;
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       unsigned int index : 31; /* srtcp packet index in network order! */
>>       unsigned int e : 1;      /* encrypted? 1=yes */
>>       /* optional mikey/etc go here */
>>  @@ -130,7 +130,7 @@
>>   
>>   #else /*  BIG_ENDIAN */
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       unsigned char version : 2;  /* protocol version       */
>>       unsigned char p : 1;        /* padding flag           */
>>       unsigned char rc : 5;       /* reception report count */
>>  @@ -139,7 +139,7 @@
>>       uint32_t ssrc;              /* synchronization source */
>>   } srtcp_hdr_t;
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       unsigned int version : 2; /* protocol version                     */
>>       unsigned int p : 1;       /* padding flag                         */
>>       unsigned int count : 5;   /* varies by packet type                */
>>  @@ -147,7 +147,7 @@
>>       uint16_t length;          /* len of uint32s of packet less header */
>>   } rtcp_common_t;
>>   
>>  -typedef struct {
>>  +typedef struct PACK {
>>       unsigned int e : 1;      /* encrypted? 1=yes */
>>       unsigned int index : 31; /* srtcp packet index */
>>       /* optional mikey/etc go here */
>>
>>
>>
>> On 07/18/2013 10:51 AM, Jonathan Lennox wrote:
>>> Sparc failing with "Bus Error" usually indicates an unaligned access.  
>>> Other platforms tolerate this, but at some performance cost, so it's good 
>>> to get rid of it across the board.  I wouldn't expect it to be a security 
>>> vulnerability.
>>>
>>> Can you pull the current GIT repo to see if it fails the same way?
>>>
>>> On Jul 18, 2013, at 7:47 AM, Daniel Pocock <[email protected]> wrote:
>>>
>>>> There is a long outstanding bug in Debian for sparc, specifically, bus
>>>> error in the test cases:
>>>>
>>>> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=628583
>>>>
>>>> While the error only appears on sparc it may be indicative of other 
>>>> problems
>>>>
>>>> Given concern about the recent CVE-2013-2139 (buffer overflow) it might
>>>> also be helpful to try and correct things like this that suggest some
>>>> coding issues still exist
>>>>
>>>> Has anybody already looked at the issue in the past?  Does the stack
>>>> trace suggest any particular problem?
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> See everything from the browser to the database with AppDynamics
>>>> Get end-to-end visibility with application monitoring from AppDynamics
>>>> Isolate bottlenecks and diagnose root cause in seconds.
>>>> Start your free trial of AppDynamics Pro today!
>>>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>>> _______________________________________________
>>>> Srtp-development mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/srtp-development
>>> --
>>> Jonathan Lennox
>>> [email protected]
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> See everything from the browser to the database with AppDynamics
>>> Get end-to-end visibility with application monitoring from AppDynamics
>>> Isolate bottlenecks and diagnose root cause in seconds.
>>> Start your free trial of AppDynamics Pro today!
>>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> Srtp-development mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/srtp-development
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> See everything from the browser to the database with AppDynamics
>> Get end-to-end visibility with application monitoring from AppDynamics
>> Isolate bottlenecks and diagnose root cause in seconds.
>> Start your free trial of AppDynamics Pro today!
>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>
>>
>> _______________________________________________
>> Srtp-development mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/srtp-development
>
>
>
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>
>
> _______________________________________________
> Srtp-development mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/srtp-development

Reply via email to