All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: u-boot@lists.denx.de
Subject: [PATCH 2/4] fs: fat: must not write directory '.' and '..'
Date: Sun, 31 Jan 2021 00:09:51 +0100	[thread overview]
Message-ID: <20210130230953.307517-3-xypron.glpk@gmx.de> (raw)
In-Reply-To: <20210130230953.307517-1-xypron.glpk@gmx.de>

Directories or files called '.' or '..' cannot be created or written to
in any directory. Move the test to normalize_longname() to check this
early.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 fs/fat/fat_write.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c
index a9b9fa5d68..7bd7463464 100644
--- a/fs/fat/fat_write.c
+++ b/fs/fat/fat_write.c
@@ -1260,6 +1260,9 @@ static int normalize_longname(char *l_filename, const char *filename)
 {
 	const char *p, illegal[] = "<>:\"/\\|?*";

+	if (!strcmp(filename, ".") || !strcmp(filename, ".."))
+		return -1;
+
 	if (strlen(filename) >= VFAT_MAXLEN_BYTES)
 		return -1;

@@ -1348,15 +1351,6 @@ int file_fat_write_at(const char *filename, loff_t pos, void *buffer,
 		char shortname[SHORT_NAME_SIZE];
 		int ndent;

-		if (itr->is_root) {
-			/* root dir cannot have "." or ".." */
-			if (!strcmp(l_filename, ".") ||
-			    !strcmp(l_filename, "..")) {
-				ret = -EINVAL;
-				goto exit;
-			}
-		}
-
 		if (pos) {
 			/* No hole allowed */
 			ret = -EINVAL;
--
2.29.2

  parent reply	other threads:[~2021-01-30 23:09 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-30 23:09 [PATCH 0/4] fs: fat: code clean up Heinrich Schuchardt
2021-01-30 23:09 ` [PATCH 1/4] fs: fat: usage basename in file_fat_write_at, fat_mkdir Heinrich Schuchardt
2021-01-30 23:09 ` Heinrich Schuchardt [this message]
2021-01-30 23:09 ` [PATCH 3/4] fs: fat: carve out fat_create_dir_entry() Heinrich Schuchardt
2021-01-30 23:09 ` [PATCH 4/4] fs: fat: remove trailing periods from long name Heinrich Schuchardt
2021-02-01  8:18   ` AKASHI Takahiro
2021-02-01 12:34     ` Heinrich Schuchardt
2021-02-01 23:54       ` AKASHI Takahiro
2021-02-02  6:05         ` Heinrich Schuchardt
2021-02-02  6:39           ` AKASHI Takahiro
2021-02-02  6:52             ` Heinrich Schuchardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210130230953.307517-3-xypron.glpk@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.