linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mkfs.ubifs: Also encrypt multi linked files
@ 2020-01-06 19:28 Christian Eggers
  2020-01-08 22:26 ` Richard Weinberger
  0 siblings, 1 reply; 2+ messages in thread
From: Christian Eggers @ 2020-01-06 19:28 UTC (permalink / raw)
  To: linux-mtd; +Cc: Christian Eggers

[-- Attachment #1: Type: text/plain, Size: 3261 bytes --]

Up to now, no fscrypt context has been passed when calling add_non_dir()
from add_multi_linked_files(). In consequence, files with multiple links
were not encrypted all.

The Linux ubifs file system detects this situation (file not encrypted,
but parent directory is) and refuses to open such files. Nevertheless,
these files are stored unencrypted in flash and could be accessed by
reading directly from the flash.

Signed-off-by: Christian Eggers <ceggers@arri.de>
---
 ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
index 4247270..519c982 100644
--- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
+++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
@@ -2228,7 +2228,7 @@ out_free:
 /**
  * add_multi_linked_files - write all the files for which we counted links.
  */
-static int add_multi_linked_files(void)
+static int add_multi_linked_files(struct fscrypt_context *fctx)
 {
        int i, err;

@@ -2237,11 +2237,16 @@ static int add_multi_linked_files(void)
                unsigned char type = 0;

                for (im = hash_table[i]; im; im = im->next) {
+                       struct fscrypt_context *new_fctx = inherit_fscrypt_context(fctx);
+
                        dbg_msg(2, "%s", im->path_name);
                        err = add_non_dir(im->path_name, &im->use_inum,
-                                         im->use_nlink, &type, &im->st, NULL);
-                       if (err)
+                                         im->use_nlink, &type, &im->st, new_fctx);
+                       if (err) {
+                               free_fscrypt_context(new_fctx);
                                return err;
+                       }
+                       free_fscrypt_context(new_fctx);
                }
        }
        return 0;
@@ -2290,7 +2295,7 @@ static int write_data(void)
        err = add_directory(root, UBIFS_ROOT_INO, &root_st, !!root, root_fctx);
        if (err)
                return err;
-       err = add_multi_linked_files();
+       err = add_multi_linked_files(root_fctx);
        if (err)
                return err;
        return flush_nodes();
--
2.16.4

________________________________
 [http://assets.arri.com/media/sign/2019-12-13a-ARRI-E-mail-Signatur-Parkstadt.jpg] <https://www.google.com/maps/place/Herbert-Bayer-Stra%C3%9Fe+10,+80807+M%C3%BCnchen/data=!4m2!3m1!1s0x479e74379489f045:0x4bbf0c7a9e893d66?sa=X&ved=2ahUKEwjjvdSlh8TmAhWIp4sKHe3vDlQQ8gEwAHoECAsQAQ>

Get all the latest information from www.arri.com<https://www.arri.com/>, Facebook<https://www.facebook.com/TeamARRI>, Twitter<https://twitter.com/ARRIChannel>, Instagram<https://instagram.com/arri> and YouTube<https://www.youtube.com/user/ARRIChannel>.

Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: München - Registergericht: Amtsgericht München - Handelsregisternummer: HRA 57918
Persönlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: München - Registergericht: Amtsgericht München - Handelsregisternummer: HRB 54477
Geschäftsführer: Dr. Michael Neuhäuser; Stephan Schenk; Walter Trauninger; Markus Zeiler


[-- Attachment #2: Type: text/plain, Size: 144 bytes --]

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] mkfs.ubifs: Also encrypt multi linked files
  2020-01-06 19:28 [PATCH] mkfs.ubifs: Also encrypt multi linked files Christian Eggers
@ 2020-01-08 22:26 ` Richard Weinberger
  0 siblings, 0 replies; 2+ messages in thread
From: Richard Weinberger @ 2020-01-08 22:26 UTC (permalink / raw)
  To: Christian Eggers; +Cc: linux-mtd

On Mon, Jan 6, 2020 at 8:28 PM Christian Eggers <ceggers@arri.de> wrote:
>
> Up to now, no fscrypt context has been passed when calling add_non_dir()
> from add_multi_linked_files(). In consequence, files with multiple links
> were not encrypted all.
>
> The Linux ubifs file system detects this situation (file not encrypted,
> but parent directory is) and refuses to open such files. Nevertheless,
> these files are stored unencrypted in flash and could be accessed by
> reading directly from the flash.

Thanks for pointing this out!

> Signed-off-by: Christian Eggers <ceggers@arri.de>
> ---
>  ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
> index 4247270..519c982 100644
> --- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
> +++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c
> @@ -2228,7 +2228,7 @@ out_free:
>  /**
>   * add_multi_linked_files - write all the files for which we counted links.
>   */
> -static int add_multi_linked_files(void)
> +static int add_multi_linked_files(struct fscrypt_context *fctx)
>  {
>         int i, err;
>
> @@ -2237,11 +2237,16 @@ static int add_multi_linked_files(void)
>                 unsigned char type = 0;
>
>                 for (im = hash_table[i]; im; im = im->next) {
> +                       struct fscrypt_context *new_fctx = inherit_fscrypt_context(fctx);
> +
>                         dbg_msg(2, "%s", im->path_name);
>                         err = add_non_dir(im->path_name, &im->use_inum,
> -                                         im->use_nlink, &type, &im->st, NULL);
> -                       if (err)
> +                                         im->use_nlink, &type, &im->st, new_fctx);
> +                       if (err) {
> +                               free_fscrypt_context(new_fctx);
>                                 return err;
> +                       }
> +                       free_fscrypt_context(new_fctx);
>                 }
>         }
>         return 0;
> @@ -2290,7 +2295,7 @@ static int write_data(void)
>         err = add_directory(root, UBIFS_ROOT_INO, &root_st, !!root, root_fctx);
>         if (err)
>                 return err;
> -       err = add_multi_linked_files();
> +       err = add_multi_linked_files(root_fctx);

Hmm, maybe I don't read the patch correctly but doesn't this
always inherit the the context from root?

This may work by chance right now but AFAICT the fscrypt model wants us
to inherit from the parent directory.

-- 
Thanks,
//richard

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-01-08 22:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-06 19:28 [PATCH] mkfs.ubifs: Also encrypt multi linked files Christian Eggers
2020-01-08 22:26 ` Richard Weinberger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).