On Tue, Mar 31, 2020 at 03:50:34PM -0700, Andres Freund wrote:
> On 2020-03-31 14:10:34 -0400, Robert Haas wrote:
> > +/*
> > + * Attempt to parse the WAL files required to restore from backup using
> > + * pg_waldump.
> > + */
> > +static void
> > +parse_required_wal(validator_context *context, char *pg_waldump_path,
> > +                              char *wal_directory, manifest_wal_range 
> > *first_wal_range)
> > +{
> > +   manifest_wal_range *this_wal_range = first_wal_range;
> > +
> > +   while (this_wal_range != NULL)
> > +   {
> > +           char *pg_waldump_cmd;
> > +
> > +           pg_waldump_cmd = psprintf("\"%s\" --quiet --path=\"%s\" 
> > --timeline=%u --start=%X/%X --end=%X/%X\n",
> > +                      pg_waldump_path, wal_directory, this_wal_range->tli,
> > +                      (uint32) (this_wal_range->start_lsn >> 32),
> > +                      (uint32) this_wal_range->start_lsn,
> > +                      (uint32) (this_wal_range->end_lsn >> 32),
> > +                      (uint32) this_wal_range->end_lsn);
> > +           if (system(pg_waldump_cmd) != 0)
> > +                   report_backup_error(context,
> > +                                                           "WAL parsing 
> > failed for timeline %u",
> > +                                                           
> > this_wal_range->tli);
> > +
> > +           this_wal_range = this_wal_range->next;
> > +   }
> > +}
> 
> Should we have a function to properly escape paths in cases like this?
> Not that it's likely or really problematic, but the quoting for path
> could be "circumvented".

Are you looking for appendShellString(), or something different?


Reply via email to