[CRIU] [PATCH 2/3] Issue #360: Anonymize image files

Radostin Stoyanov rstoyanov1 at gmail.com
Mon Jun 24 18:12:03 MSK 2019


On 22/06/2019 10:37, Harshavardhan Unnibhavi wrote:
> This commit changes the pycriu.images.load() function to return magic type of the loaded image file. The reason was to use this type information to call appropriate methods to handle anonymisation.
Considering Pavel's comment, this commit could be combined with the 
previous one?
> Signed-off-by: Harshavardhan Unnibhavi <hvubfoss at gmail.com>
> ---
>   lib/py/cli.py           | 17 ++++++++++++++++-
>   lib/py/images/images.py |  5 ++++-
>   2 files changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/lib/py/cli.py b/lib/py/cli.py
> index d3242f08..17622fd2 100755
> --- a/lib/py/cli.py
> +++ b/lib/py/cli.py
> @@ -273,8 +273,23 @@ def explore_rss(opts):
>   
>   
>   def anonymize(opts):
> -	pass
> +	try:
> +		os.stat(opts['out'])
> +	except:
> +		os.mkdir(opts['out'])
Here we could call os.makedirs() and handle any errors, something like

try:
     os.makedirs(opts['out'])
except OSError as err:
     if err.errno != os.errno.EEXIST:
         raise

> +	
> +	img_files = os.listdir(opts['in'])
Using glob() will return a list of matching pathnames (image files):

img_files = glob.glob(os.path.join(opts['in'], '*.img'))

> +
> +	for i in img_files:
> +		temp = {'in':os.path.join(opts['in'], i)}
When using glob(), the os.path.join() will not be necessary. For the 
next patch, the file name could be obtained with os.path.basename()
>   
> +		try:
> +			m, img = pycriu.images.load(inf(temp), anon_info = True)
> +		except pycriu.images.MagicException as exc:
> +			print("Unknown magic %#x.\n"\
> +					"Found a raw image, continuing ..."% exc.magic, file=sys.stderr)
please add a space before the % sign
> +			continue
is the 'continue' keyword necessary?
> +		
could you please remove the trailing white-space?
>   
>   explorers = { 'ps': explore_ps, 'fds': explore_fds, 'mems': explore_mems, 'rss': explore_rss }
>   
> diff --git a/lib/py/images/images.py b/lib/py/images/images.py
> index 7a9b9da6..a411ffc4 100644
> --- a/lib/py/images/images.py
> +++ b/lib/py/images/images.py
> @@ -528,7 +528,7 @@ def __rhandler(f):
>   
>   	return m, handler
>   
> -def load(f, pretty = False, no_payload = False):
> +def load(f, pretty = False, no_payload = False, anon_info = False):
>   	"""
>   	Convert criu image from binary format to dict(json).
>   	Takes a file-like object to read criu image from.
> @@ -541,6 +541,9 @@ def load(f, pretty = False, no_payload = False):
>   	image['magic'] = m
>   	image['entries'] = handler.load(f, pretty, no_payload)
>   
> +	if anon_info:
> +		return m, image
> +
>   	return image
>   
>   def info(f):


More information about the CRIU mailing list