Re: add some more error checks into _fileExistsInDirectory function to report "too long name" error - Mailing list pgsql-hackers

From Daniel Gustafsson
Subject Re: add some more error checks into _fileExistsInDirectory function to report "too long name" error
Date
Msg-id CB93153C-17A0-421B-AE8F-63C22D0CFFED@yesql.se
Whole thread Raw
In response to add some more error checks into _fileExistsInDirectory function to report "too long name" error  (Mahendra Singh Thalor <mahi6run@gmail.com>)
List pgsql-hackers
> On 11 Apr 2025, at 14:26, Mahendra Singh Thalor <mahi6run@gmail.com> wrote:
>
> Hi,
> In another thread[1], Álvaro gave some feedback for _fileExistsInDirectory function for "too long name" error.
> Basically, in _fileExistsInDirectory function, we pass dirname and filename but we were checking only the combined
lengthof these two names. 

My interpretation of the original problem in the other thread is that the
errormessage isn't applicable for a generic function as it only mention
directory, not that checking the combination is inherently wrong.

> Here, I am attaching a patch which will check lengths of dirname and filename separately and will report errors if
thename is too long. 

Since we only care about the combination of directory and filename, do we
really gain much by using separate checks?  A proposed filename exceeding
MAXPGPATH should be pretty rare in production I'd hope.

+   if (snprintf(buf, MAXPGPATH, "%s/%s", dir, filename) >= MAXPGPATH)
+       pg_fatal("combined name of directory:\"%s\" and file:\"%s\" is too long", filename, dir);

snprintf() will return a negative value in case of an error so if we really
want to clamp down on path generation we should probably check that as well.

--
Daniel Gustafsson




pgsql-hackers by date:

Previous
From: Mahendra Singh Thalor
Date:
Subject: Re: merge file_exists_in_directory and _fileExistsInDirectory functions and move into common file dumputils.c
Next
From: torikoshia
Date:
Subject: Re: RFC: Allow EXPLAIN to Output Page Fault Information