Home | History | Annotate | Line # | Download | only in lint1
msg_135.c revision 1.7
      1  1.7  rillig /*	$NetBSD: msg_135.c,v 1.7 2021/04/17 16:58:04 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_135.c"
      3  1.1  rillig 
      4  1.4  rillig // Test for message: converting '%s' to '%s' may cause alignment problem [135]
      5  1.1  rillig 
      6  1.3  rillig /* lint1-extra-flags: -h */
      7  1.3  rillig 
      8  1.6  rillig void sink(const void *);
      9  1.6  rillig 
     10  1.3  rillig unsigned
     11  1.3  rillig read_uint(const unsigned char **pp)
     12  1.3  rillig {
     13  1.3  rillig 	unsigned val;
     14  1.3  rillig 
     15  1.5  rillig 	val = *(const unsigned *)(*pp);	/* expect: 135 */
     16  1.3  rillig 	pp += sizeof(unsigned);
     17  1.3  rillig 	return val;
     18  1.3  rillig }
     19  1.6  rillig 
     20  1.6  rillig struct incomplete;	/* expect: never defined */
     21  1.6  rillig 
     22  1.6  rillig struct complete {
     23  1.6  rillig     int member;
     24  1.6  rillig };
     25  1.6  rillig 
     26  1.6  rillig /*
     27  1.6  rillig  * These types of conversions are typically seen in OpenSSL, when converting
     28  1.6  rillig  * from the publicly visible, incomplete 'struct lhash_st' to a private
     29  1.6  rillig  * implementation type such as 'struct lhash_st_OPENSSL_STRING'.
     30  1.6  rillig  *
     31  1.7  rillig  * Before tree.c 1.277 from 2021-04-17, lint warned about this, even though
     32  1.7  rillig  * there was not enough evidence that there really was an alignment problem,
     33  1.7  rillig  * resulting in many false positives.
     34  1.7  rillig  *
     35  1.6  rillig  * See openssl/lhash.h.
     36  1.6  rillig  */
     37  1.6  rillig void
     38  1.6  rillig pointer_to_structs(struct incomplete *incomplete)
     39  1.6  rillig {
     40  1.6  rillig 	struct complete *complete;
     41  1.6  rillig 
     42  1.7  rillig 	complete = (struct complete *)incomplete;
     43  1.6  rillig 	sink(complete);
     44  1.6  rillig }
     45