logic bug in _add_serialno
this logic is wrong (though probably not exercised); if serialno_list is NULL, it will try to dereference the null pointer.
if(serialno_list){ *serialno_list = _ogg_realloc(*serialno_list, sizeof(serialno_list)(*n)); }else{ *serialno_list = _ogg_malloc(sizeof(**serialno_list)); }