[CRIU] [PATCH] crit: Avoid full exception trace when meeting unknown magic in image (v2)

Andrew Vagin avagin at odin.com
Fri May 29 09:00:52 PDT 2015


Acked-by: Andrew Vagin <avagin at virtuozzo.com>

On Fri, May 29, 2015 at 04:01:55PM +0300, Pavel Emelyanov wrote:
> Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
> 
> ---
> 
> diff --git a/crit b/crit
> index 88f3b8e..350362c 100755
> --- a/crit
> +++ b/crit
> @@ -20,7 +20,14 @@ def outf(opts):
>  
>  def decode(opts):
>  	indent = None
> -	img = pycriu.images.load(inf(opts), opts['pretty'])
> +
> +	try:
> +		img = pycriu.images.load(inf(opts), opts['pretty'])
> +	except pycriu.images.MagicException as exc:
> +		print >>sys.stderr, "Unknown magic %#x.\n"\
> +				"Maybe you are feeding me an image with "\
> +				"raw data(i.e. pages.img)?" % exc.magic
> +		sys.exit(1)
>  
>  	if opts['pretty']:
>  		indent = 4
> diff --git a/pycriu/images/images.py b/pycriu/images/images.py
> index c8c2e9e..5efd60b 100644
> --- a/pycriu/images/images.py
> +++ b/pycriu/images/images.py
> @@ -50,6 +50,10 @@ import pb2dict
>  import magic
>  from pb import *
>  
> +class MagicException(Exception):
> +	def __init__(self, magic):
> +		self.magic = magic
> +
>  # Generic class to handle loading/dumping criu images entries from/to bin
>  # format to/from dict(json).
>  class entry_handler:
> @@ -300,9 +304,7 @@ def load(f, pretty = False):
>  	try:
>  		m = magic.by_val[img_magic]
>  	except:
> -		raise Exception("Unknown magic "+str(img_magic)+".\n"\
> -				"Maybe you are feeding me an image with "\
> -				"raw data(i.e. pages.img)?")
> +		raise MagicException(img_magic)
>  
>  	try:
>  		handler = handlers[m]
> 
> 


More information about the CRIU mailing list