On 2025-04-14 Mo 6:55 PM, Mahendra Singh Thalor wrote:


    --- a/src/bin/pg_dump/pg_restore.c
    +++ b/src/bin/pg_dump/pg_restore.c
    @@ -1053,15 +1053,19 @@ get_dbname_oid_list_from_mfile(const char
    *dumpdirpath, SimpleOidStringList *dbn
            while ((fgets(line, MAXPGPATH, pfile)) != NULL)
            {
                    Oid                     db_oid = InvalidOid;
    -               char            db_oid_str[MAXPGPATH + 1] = "";
                    char       *dbname;
    +               char            *p = line;

                    /* Extract dboid. */
                    sscanf(line, "%u", &db_oid);
    -               sscanf(line, "%20s", db_oid_str);
    +
    +               while(isdigit(*p))
    +                       p++;
    +
    +               Assert(*p == ' ');

                    /* dbname is the rest of the line */
    -               dbname = line + strlen(db_oid_str) + 1;
    +               dbname = ++p;

                    /* Remove \n from dbname. */
                    dbname[strlen(dbname) - 1] = '\0';



I don't think an Assert is the right thing here. It's for things that should not be possible, and won't trigger anything in a non-assertion build. This condition should cause a pg_fatal().


cheers


andrew


--
Andrew Dunstan
EDB:https://www.enterprisedb.com

Reply via email to