@@ -65,41 +65,41 @@ struct s2n_stuffer {
6565S2N_RESULT s2n_stuffer_validate (const struct s2n_stuffer * stuffer );
6666
6767/* Initialize and destroying stuffers */
68- int s2n_stuffer_init (struct s2n_stuffer * stuffer , struct s2n_blob * in );
69- int s2n_stuffer_init_written (struct s2n_stuffer * stuffer , struct s2n_blob * in );
70- int s2n_stuffer_alloc (struct s2n_stuffer * stuffer , const uint32_t size );
71- int s2n_stuffer_growable_alloc (struct s2n_stuffer * stuffer , const uint32_t size );
68+ int S2N_RESULT_MUST_USE s2n_stuffer_init (struct s2n_stuffer * stuffer , struct s2n_blob * in );
69+ int S2N_RESULT_MUST_USE s2n_stuffer_init_written (struct s2n_stuffer * stuffer , struct s2n_blob * in );
70+ int S2N_RESULT_MUST_USE s2n_stuffer_alloc (struct s2n_stuffer * stuffer , const uint32_t size );
71+ int S2N_RESULT_MUST_USE s2n_stuffer_growable_alloc (struct s2n_stuffer * stuffer , const uint32_t size );
7272int s2n_stuffer_free (struct s2n_stuffer * stuffer );
7373/**
7474 * Frees the stuffer without zeroizing the contained data.
7575 *
7676 * This should only be used in scenarios where the data is encrypted or has been
7777 * cleared with `s2n_stuffer_erase_and_read`. In most cases, prefer `s2n_stuffer_free`.
7878 */
79- int s2n_stuffer_free_without_wipe (struct s2n_stuffer * stuffer );
80- int s2n_stuffer_resize (struct s2n_stuffer * stuffer , const uint32_t size );
81- int s2n_stuffer_resize_if_empty (struct s2n_stuffer * stuffer , const uint32_t size );
82- int s2n_stuffer_rewind_read (struct s2n_stuffer * stuffer , const uint32_t size );
83- int s2n_stuffer_reread (struct s2n_stuffer * stuffer );
84- int s2n_stuffer_rewrite (struct s2n_stuffer * stuffer );
79+ int S2N_RESULT_MUST_USE s2n_stuffer_free_without_wipe (struct s2n_stuffer * stuffer );
80+ int S2N_RESULT_MUST_USE s2n_stuffer_resize (struct s2n_stuffer * stuffer , const uint32_t size );
81+ int S2N_RESULT_MUST_USE s2n_stuffer_resize_if_empty (struct s2n_stuffer * stuffer , const uint32_t size );
82+ int S2N_RESULT_MUST_USE s2n_stuffer_rewind_read (struct s2n_stuffer * stuffer , const uint32_t size );
83+ int S2N_RESULT_MUST_USE s2n_stuffer_reread (struct s2n_stuffer * stuffer );
84+ int S2N_RESULT_MUST_USE s2n_stuffer_rewrite (struct s2n_stuffer * stuffer );
8585int s2n_stuffer_wipe (struct s2n_stuffer * stuffer );
8686int s2n_stuffer_wipe_n (struct s2n_stuffer * stuffer , const uint32_t n );
8787bool s2n_stuffer_is_consumed (struct s2n_stuffer * stuffer );
8888
8989/* Basic read and write */
90- int s2n_stuffer_read (struct s2n_stuffer * stuffer , struct s2n_blob * out );
91- int s2n_stuffer_erase_and_read (struct s2n_stuffer * stuffer , struct s2n_blob * out );
92- int s2n_stuffer_write (struct s2n_stuffer * stuffer , const struct s2n_blob * in );
93- int s2n_stuffer_read_bytes (struct s2n_stuffer * stuffer , uint8_t * out , uint32_t n );
94- int s2n_stuffer_erase_and_read_bytes (struct s2n_stuffer * stuffer , uint8_t * data , uint32_t size );
95- int s2n_stuffer_write_bytes (struct s2n_stuffer * stuffer , const uint8_t * in , const uint32_t n );
96- int s2n_stuffer_writev_bytes (struct s2n_stuffer * stuffer , const struct iovec * iov , size_t iov_count ,
90+ int S2N_RESULT_MUST_USE s2n_stuffer_read (struct s2n_stuffer * stuffer , struct s2n_blob * out );
91+ int S2N_RESULT_MUST_USE s2n_stuffer_erase_and_read (struct s2n_stuffer * stuffer , struct s2n_blob * out );
92+ int S2N_RESULT_MUST_USE s2n_stuffer_write (struct s2n_stuffer * stuffer , const struct s2n_blob * in );
93+ int S2N_RESULT_MUST_USE s2n_stuffer_read_bytes (struct s2n_stuffer * stuffer , uint8_t * out , uint32_t n );
94+ int S2N_RESULT_MUST_USE s2n_stuffer_erase_and_read_bytes (struct s2n_stuffer * stuffer , uint8_t * data , uint32_t size );
95+ int S2N_RESULT_MUST_USE s2n_stuffer_write_bytes (struct s2n_stuffer * stuffer , const uint8_t * in , const uint32_t n );
96+ int S2N_RESULT_MUST_USE s2n_stuffer_writev_bytes (struct s2n_stuffer * stuffer , const struct iovec * iov , size_t iov_count ,
9797 uint32_t offs , uint32_t size );
98- int s2n_stuffer_skip_read (struct s2n_stuffer * stuffer , uint32_t n );
99- int s2n_stuffer_skip_write (struct s2n_stuffer * stuffer , const uint32_t n );
98+ int S2N_RESULT_MUST_USE s2n_stuffer_skip_read (struct s2n_stuffer * stuffer , uint32_t n );
99+ int S2N_RESULT_MUST_USE s2n_stuffer_skip_write (struct s2n_stuffer * stuffer , const uint32_t n );
100100
101101/* Tries to reserve enough space to write n additional bytes into the stuffer.*/
102- int s2n_stuffer_reserve_space (struct s2n_stuffer * stuffer , uint32_t n );
102+ int S2N_RESULT_MUST_USE s2n_stuffer_reserve_space (struct s2n_stuffer * stuffer , uint32_t n );
103103
104104/* Raw read/write move the cursor along and give you a pointer you can
105105 * read/write data_len bytes from/to in-place.
@@ -113,17 +113,17 @@ int s2n_stuffer_recv_from_fd(struct s2n_stuffer *stuffer, const int rfd, const u
113113int s2n_stuffer_send_to_fd (struct s2n_stuffer * stuffer , const int wfd , const uint32_t len , uint32_t * bytes_sent );
114114
115115/* Read and write integers in network order */
116- int s2n_stuffer_read_uint8 (struct s2n_stuffer * stuffer , uint8_t * u );
117- int s2n_stuffer_read_uint16 (struct s2n_stuffer * stuffer , uint16_t * u );
118- int s2n_stuffer_read_uint24 (struct s2n_stuffer * stuffer , uint32_t * u );
119- int s2n_stuffer_read_uint32 (struct s2n_stuffer * stuffer , uint32_t * u );
120- int s2n_stuffer_read_uint64 (struct s2n_stuffer * stuffer , uint64_t * u );
121-
122- int s2n_stuffer_write_uint8 (struct s2n_stuffer * stuffer , const uint8_t u );
123- int s2n_stuffer_write_uint16 (struct s2n_stuffer * stuffer , const uint16_t u );
124- int s2n_stuffer_write_uint24 (struct s2n_stuffer * stuffer , const uint32_t u );
125- int s2n_stuffer_write_uint32 (struct s2n_stuffer * stuffer , const uint32_t u );
126- int s2n_stuffer_write_uint64 (struct s2n_stuffer * stuffer , const uint64_t u );
116+ int S2N_RESULT_MUST_USE s2n_stuffer_read_uint8 (struct s2n_stuffer * stuffer , uint8_t * u );
117+ int S2N_RESULT_MUST_USE s2n_stuffer_read_uint16 (struct s2n_stuffer * stuffer , uint16_t * u );
118+ int S2N_RESULT_MUST_USE s2n_stuffer_read_uint24 (struct s2n_stuffer * stuffer , uint32_t * u );
119+ int S2N_RESULT_MUST_USE s2n_stuffer_read_uint32 (struct s2n_stuffer * stuffer , uint32_t * u );
120+ int S2N_RESULT_MUST_USE s2n_stuffer_read_uint64 (struct s2n_stuffer * stuffer , uint64_t * u );
121+
122+ int S2N_RESULT_MUST_USE s2n_stuffer_write_uint8 (struct s2n_stuffer * stuffer , const uint8_t u );
123+ int S2N_RESULT_MUST_USE s2n_stuffer_write_uint16 (struct s2n_stuffer * stuffer , const uint16_t u );
124+ int S2N_RESULT_MUST_USE s2n_stuffer_write_uint24 (struct s2n_stuffer * stuffer , const uint32_t u );
125+ int S2N_RESULT_MUST_USE s2n_stuffer_write_uint32 (struct s2n_stuffer * stuffer , const uint32_t u );
126+ int S2N_RESULT_MUST_USE s2n_stuffer_write_uint64 (struct s2n_stuffer * stuffer , const uint64_t u );
127127
128128/* Allocate space now for network order integers that will be written later.
129129 * These are primarily intended to handle the vector type defined in the RFC:
@@ -135,10 +135,10 @@ struct s2n_stuffer_reservation {
135135};
136136/* Check basic validity constraints on the s2n_stuffer_reservation: e.g. stuffer validity. */
137137S2N_RESULT s2n_stuffer_reservation_validate (const struct s2n_stuffer_reservation * reservation );
138- int s2n_stuffer_reserve_uint8 (struct s2n_stuffer * stuffer , struct s2n_stuffer_reservation * reservation );
139- int s2n_stuffer_reserve_uint16 (struct s2n_stuffer * stuffer , struct s2n_stuffer_reservation * reservation );
140- int s2n_stuffer_reserve_uint24 (struct s2n_stuffer * stuffer , struct s2n_stuffer_reservation * reservation );
141- int s2n_stuffer_write_vector_size (struct s2n_stuffer_reservation * reservation );
138+ int S2N_RESULT_MUST_USE s2n_stuffer_reserve_uint8 (struct s2n_stuffer * stuffer , struct s2n_stuffer_reservation * reservation );
139+ int S2N_RESULT_MUST_USE s2n_stuffer_reserve_uint16 (struct s2n_stuffer * stuffer , struct s2n_stuffer_reservation * reservation );
140+ int S2N_RESULT_MUST_USE s2n_stuffer_reserve_uint24 (struct s2n_stuffer * stuffer , struct s2n_stuffer_reservation * reservation );
141+ int S2N_RESULT_MUST_USE s2n_stuffer_write_vector_size (struct s2n_stuffer_reservation * reservation );
142142
143143/* Copy one stuffer to another */
144144int s2n_stuffer_copy (struct s2n_stuffer * from , struct s2n_stuffer * to , uint32_t len );
@@ -153,18 +153,18 @@ int s2n_stuffer_write_base64(struct s2n_stuffer *stuffer, struct s2n_stuffer *in
153153#define s2n_stuffer_write_str (stuffer , c ) s2n_stuffer_write_bytes((stuffer), (const uint8_t *) (c), strlen((c)))
154154#define s2n_stuffer_write_text (stuffer , c , n ) s2n_stuffer_write_bytes((stuffer), (const uint8_t *) (c), (n))
155155#define s2n_stuffer_read_text (stuffer , c , n ) s2n_stuffer_read_bytes((stuffer), (uint8_t *) (c), (n))
156- int s2n_stuffer_read_expected_str (struct s2n_stuffer * stuffer , const char * expected );
157- int s2n_stuffer_peek_char (struct s2n_stuffer * stuffer , char * c );
158- int s2n_stuffer_read_token (struct s2n_stuffer * stuffer , struct s2n_stuffer * token , char delim );
159- int s2n_stuffer_read_line (struct s2n_stuffer * stuffer , struct s2n_stuffer * token );
160- int s2n_stuffer_peek_check_for_str (struct s2n_stuffer * s2n_stuffer , const char * expected );
161- int s2n_stuffer_skip_whitespace (struct s2n_stuffer * stuffer , uint32_t * skipped );
162- int s2n_stuffer_skip_to_char (struct s2n_stuffer * stuffer , char target );
163- int s2n_stuffer_skip_expected_char (struct s2n_stuffer * stuffer , const char expected , const uint32_t min ,
156+ int S2N_RESULT_MUST_USE s2n_stuffer_read_expected_str (struct s2n_stuffer * stuffer , const char * expected );
157+ int S2N_RESULT_MUST_USE s2n_stuffer_peek_char (struct s2n_stuffer * stuffer , char * c );
158+ int S2N_RESULT_MUST_USE s2n_stuffer_read_token (struct s2n_stuffer * stuffer , struct s2n_stuffer * token , char delim );
159+ int S2N_RESULT_MUST_USE s2n_stuffer_read_line (struct s2n_stuffer * stuffer , struct s2n_stuffer * token );
160+ int S2N_RESULT_MUST_USE s2n_stuffer_peek_check_for_str (struct s2n_stuffer * s2n_stuffer , const char * expected );
161+ int S2N_RESULT_MUST_USE s2n_stuffer_skip_whitespace (struct s2n_stuffer * stuffer , uint32_t * skipped );
162+ int S2N_RESULT_MUST_USE s2n_stuffer_skip_to_char (struct s2n_stuffer * stuffer , char target );
163+ int S2N_RESULT_MUST_USE s2n_stuffer_skip_expected_char (struct s2n_stuffer * stuffer , const char expected , const uint32_t min ,
164164 const uint32_t max , uint32_t * skipped );
165- int s2n_stuffer_skip_read_until (struct s2n_stuffer * stuffer , const char * target );
166- int s2n_stuffer_alloc_ro_from_string (struct s2n_stuffer * stuffer , const char * str );
167- int s2n_stuffer_init_ro_from_string (struct s2n_stuffer * stuffer , uint8_t * data , uint32_t length );
165+ int S2N_RESULT_MUST_USE s2n_stuffer_skip_read_until (struct s2n_stuffer * stuffer , const char * target );
166+ int S2N_RESULT_MUST_USE s2n_stuffer_alloc_ro_from_string (struct s2n_stuffer * stuffer , const char * str );
167+ int S2N_RESULT_MUST_USE s2n_stuffer_init_ro_from_string (struct s2n_stuffer * stuffer , uint8_t * data , uint32_t length );
168168
169169/* Stuffer versions of sprintf methods, except:
170170 * - They write bytes, not strings. They do not write a final '\0'. Unfortunately,
@@ -173,25 +173,25 @@ int s2n_stuffer_init_ro_from_string(struct s2n_stuffer *stuffer, uint8_t *data,
173173 * - vprintf does not consume the vargs. It calls va_copy before using
174174 * the varg argument, so can be called repeatedly with the same vargs.
175175 */
176- int s2n_stuffer_printf (struct s2n_stuffer * stuffer , const char * format , ...);
177- int s2n_stuffer_vprintf (struct s2n_stuffer * stuffer , const char * format , va_list vargs );
176+ int S2N_RESULT_MUST_USE s2n_stuffer_printf (struct s2n_stuffer * stuffer , const char * format , ...);
177+ int S2N_RESULT_MUST_USE s2n_stuffer_vprintf (struct s2n_stuffer * stuffer , const char * format , va_list vargs );
178178
179179/* Read a private key from a PEM encoded stuffer to an ASN1/DER encoded one */
180- int s2n_stuffer_private_key_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * asn1 , int * type );
180+ int S2N_RESULT_MUST_USE s2n_stuffer_private_key_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * asn1 , int * type );
181181
182182/* Read a certificate from a PEM encoded stuffer to an ASN1/DER encoded one */
183- int s2n_stuffer_certificate_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * asn1 );
183+ int S2N_RESULT_MUST_USE s2n_stuffer_certificate_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * asn1 );
184184
185185/* Read a CRL from a PEM encoded stuffer to an ASN1/DER encoded one */
186- int s2n_stuffer_crl_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * asn1 );
186+ int S2N_RESULT_MUST_USE s2n_stuffer_crl_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * asn1 );
187187
188188/* Read DH parameters om a PEM encoded stuffer to a PKCS3 encoded one */
189- int s2n_stuffer_dhparams_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * pkcs3 );
189+ int S2N_RESULT_MUST_USE s2n_stuffer_dhparams_from_pem (struct s2n_stuffer * pem , struct s2n_stuffer * pkcs3 );
190190
191191bool s2n_is_base64_char (unsigned char c );
192192
193193/* Copies all valid data from "stuffer" into "out".
194194 * The old blob "out" pointed to is freed.
195195 * It is the responsibility of the caller to free the free "out".
196196 */
197- int s2n_stuffer_extract_blob (struct s2n_stuffer * stuffer , struct s2n_blob * out );
197+ int S2N_RESULT_MUST_USE s2n_stuffer_extract_blob (struct s2n_stuffer * stuffer , struct s2n_blob * out );
0 commit comments