Bad QR codes fail gracefully