You cannot hope to handle all possible effects arising from an app
providing an invalid sg header / cdb.
Once you start talking "recovery" you are already screwed: we are
talking about low-level hardware commands that are passed straight to
the hardware. It is trivial to lock up hardware, brick hardware, and
corrupt data at that level.
If this is NOT a privileged app, we must update the command validation
to ensure that invalid commands are not transported to the hardware.
If this is a privileged app, our work is done. Fix the app. We gave
root rope, and he took it.
I even venture to say that "accept anything, clean up afterwards" is
/impossible/ to implement, in addition to being dangerous.
Jeff
-