[tor-bugs] #3571 [Pluggable transport]: obfsproxy: Please review portability fixes

Tor Bug Tracker & Wiki torproject-admin at torproject.org
Thu Jul 14 20:10:58 UTC 2011


#3571: obfsproxy: Please review portability fixes
------------------------------------+---------------------------------------
    Reporter:  zwol                 |       Owner:  asn   
        Type:  enhancement          |      Status:  closed
    Priority:  normal               |   Milestone:        
   Component:  Pluggable transport  |     Version:        
  Resolution:  fixed                |    Keywords:        
      Parent:                       |      Points:        
Actualpoints:                       |  
------------------------------------+---------------------------------------

Comment(by zwol):

 I read carefully through both sides of the merge and didn't see any
 problems.  Also, I've verified that the result still builds and passes
 unit tests on Linux and Windows.

 I did notice a new portability problem introduced on the other side of the
 merge (specifically, with the change that introduced doubly linked lists).

 {{{#define OFFSETOF(container_type, element) \
   (((char*)&((container_type*)0)->element) - ((char*)
 ((container_type*)0)))}}}

 This construct provokes undefined behavior, as it dereferences the null
 pointer (yes, even though that dereference is inside the argument of the
 address-of operator).  Sufficiently aggressive C optimizers can and will
 break it.  (No version of GCC that I have convenient access to actually
 does break it, but I recall its fragility being discussed on the GCC
 mailing lists, and I wouldn't be surprised if clang had a problem with
 it.)  It's also '''completely unnecessary'''.  C89 provides `offsetof`,
 with identical effect, in `<stddef.h>`; the last environment I'm aware of
 that didn't have `<stddef.h>` was the K&R-only compiler bundled with some
 versions of Solaris -- but obfsproxy won't compile with that antique
 anyway.

 I'll send in another patch to get rid of it.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/3571#comment:6>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list