@@ -204,98 +204,134 @@ static int _ssh_decoding_test(void)
204204 ulong32 tmp32 ;
205205 ulong64 tmp64 ;
206206 unsigned char tmp8 ;
207+ unsigned long len ;
207208 int err ;
208209
210+ /* Buffer longer */
211+ len = sizeof (strbuf );
212+ strbuf [0 ] = 0 ;
213+ DO (ssh_decode_sequence_multi ((unsigned char * )strbuf , & len ,
214+ LTC_SSHDATA_BYTE , & tmp8 ,
215+ LTC_SSHDATA_EOL , NULL ));
216+ ENSURE (tmp8 == 0x00 );
217+ ENSURE (len == 1 );
218+
219+
209220 /* byte */
210- DO (ssh_decode_sequence_multi (byte1 , sizeof (byte1 ),
221+ len = sizeof (byte1 );
222+ DO (ssh_decode_sequence_multi (byte1 , & len ,
211223 LTC_SSHDATA_BYTE , & tmp8 ,
212224 LTC_SSHDATA_EOL , NULL ));
213225 ENSURE (tmp8 == 0x01 );
226+ ENSURE (len == 1 );
214227
215- DO (ssh_decode_sequence_multi (byte2 , sizeof (byte2 ),
228+ len = sizeof (byte2 );
229+ DO (ssh_decode_sequence_multi (byte2 , & len ,
216230 LTC_SSHDATA_BYTE , & tmp8 ,
217231 LTC_SSHDATA_EOL , NULL ));
218232 ENSURE (tmp8 == 0x71 );
233+ ENSURE (len == 1 );
219234
220235 /* boolean */
221- DO (ssh_decode_sequence_multi (byte1 , sizeof (byte1 ),
236+ len = sizeof (byte1 );
237+ DO (ssh_decode_sequence_multi (byte1 , & len ,
222238 LTC_SSHDATA_BOOLEAN , & tmp8 ,
223239 LTC_SSHDATA_EOL , NULL ));
224240 ENSURE (tmp8 == 0x01 );
241+ ENSURE (len == 1 );
225242
226- DO (ssh_decode_sequence_multi (byte2 , sizeof (byte2 ),
243+ len = sizeof (byte2 );
244+ DO (ssh_decode_sequence_multi (byte2 , & len ,
227245 LTC_SSHDATA_BOOLEAN , & tmp8 ,
228246 LTC_SSHDATA_EOL , NULL ));
229247 ENSURE (tmp8 == 0x01 );
248+ ENSURE (len == 1 );
230249
231250 /* uint32 */
232- DO (ssh_decode_sequence_multi (uint32 , sizeof (uint32 ),
251+ len = sizeof (uint32 );
252+ DO (ssh_decode_sequence_multi (uint32 , & len ,
233253 LTC_SSHDATA_UINT32 , & tmp32 ,
234254 LTC_SSHDATA_EOL , NULL ));
235255 ENSURE (tmp32 == 0x29b7f4aa );
256+ ENSURE (len == 4 );
236257
237258 /* uint64 */
238- DO (ssh_decode_sequence_multi (uint64 , sizeof (uint64 ),
259+ len = sizeof (uint64 );
260+ DO (ssh_decode_sequence_multi (uint64 , & len ,
239261 LTC_SSHDATA_UINT64 , & tmp64 ,
240262 LTC_SSHDATA_EOL , NULL ));
241263 if (tmp64 != CONST64 (0x09a378f9b2e332a7 )) return CRYPT_FAIL_TESTVECTOR ;
264+ ENSURE (len == 8 );
242265
243266 /* string */
244267 zeromem (strbuf , BUFSIZE );
245268 size = BUFSIZE ;
246- DO (ssh_decode_sequence_multi (string , sizeof (string ),
269+ len = sizeof (string );
270+ DO (ssh_decode_sequence_multi (string , & len ,
247271 LTC_SSHDATA_STRING , strbuf , & size ,
248272 LTC_SSHDATA_EOL , NULL ));
249273 ENSURE (strlen ("testing" ) == size );
250274 ENSURE (XSTRCMP (strbuf , "testing" ) == 0 );
275+ ENSURE (strlen ("testing" ) + 4 == len );
251276
252277 /* mpint */
253278 if ((err = mp_init_multi (& u , & v , NULL )) != CRYPT_OK ) {
254279 return err ;
255280 }
256281
257- DO (ssh_decode_sequence_multi (mpint1 , sizeof (mpint1 ),
282+ len = sizeof (mpint1 );
283+ DO (ssh_decode_sequence_multi (mpint1 , & len ,
258284 LTC_SSHDATA_MPINT , v ,
259285 LTC_SSHDATA_EOL , NULL ));
260286 ENSURE (mp_cmp_d (v , 0 ) == LTC_MP_EQ );
287+ ENSURE (sizeof (mpint1 ) == len );
261288
262- DO ( mp_read_radix ( u , "9a378f9b2e332a7" , 16 ) );
263- DO (ssh_decode_sequence_multi (mpint2 , sizeof ( mpint2 ) ,
289+ len = sizeof ( mpint2 );
290+ DO (ssh_decode_sequence_multi (mpint2 , & len ,
264291 LTC_SSHDATA_MPINT , v ,
265292 LTC_SSHDATA_EOL , NULL ));
293+ DO (mp_read_radix (u , "9a378f9b2e332a7" , 16 ));
266294 ENSURE (mp_cmp (u , v ) == LTC_MP_EQ );
295+ ENSURE (sizeof (mpint2 ) == len );
267296
268- DO (ssh_decode_sequence_multi (mpint3 , sizeof (mpint3 ),
297+ len = sizeof (mpint3 );
298+ DO (ssh_decode_sequence_multi (mpint3 , & len ,
269299 LTC_SSHDATA_MPINT , v ,
270300 LTC_SSHDATA_EOL , NULL ));
271301 ENSURE (mp_cmp_d (v , 0x80 ) == LTC_MP_EQ );
302+ ENSURE (sizeof (mpint3 ) == len );
272303
273304 mp_clear_multi (v , u , NULL );
274305
275306 /* name-list */
276307 zeromem (strbuf , BUFSIZE );
277308 size = BUFSIZE ;
278- DO (ssh_decode_sequence_multi (nlist1 , sizeof (nlist1 ),
309+ len = sizeof (nlist1 );
310+ DO (ssh_decode_sequence_multi (nlist1 , & len ,
279311 LTC_SSHDATA_NAMELIST , strbuf , & size ,
280312 LTC_SSHDATA_EOL , NULL ));
281313 ENSURE (strlen ("" ) == size );
282314 ENSURE (XSTRCMP (strbuf , "" ) == 0 );
283315
284316 zeromem (strbuf , BUFSIZE );
285317 size = BUFSIZE ;
286- DO (ssh_decode_sequence_multi (nlist2 , sizeof (nlist2 ),
318+ len = sizeof (nlist2 );
319+ DO (ssh_decode_sequence_multi (nlist2 , & len ,
287320 LTC_SSHDATA_NAMELIST , strbuf , & size ,
288321 LTC_SSHDATA_EOL , NULL ));
289322 ENSURE (strlen ("zlib" ) == size );
290323 ENSURE (XSTRCMP (strbuf , "zlib" ) == 0 );
324+ ENSURE (strlen ("zlib" ) + 4 == len );
291325
292326 zeromem (strbuf , BUFSIZE );
293327 size = BUFSIZE ;
294- DO (ssh_decode_sequence_multi (nlist3 , sizeof (nlist3 ),
328+ len = sizeof (nlist3 );
329+ DO (ssh_decode_sequence_multi (nlist3 , & len ,
295330 LTC_SSHDATA_NAMELIST , strbuf , & size ,
296331 LTC_SSHDATA_EOL , NULL ));
297332 ENSURE (strlen ("zlib,none" ) == size );
298333 ENSURE (XSTRCMP (strbuf , "zlib,none" ) == 0 );
334+ ENSURE (strlen ("zlib,none" ) + 4 == len );
299335
300336
301337 return CRYPT_OK ;
0 commit comments