[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [OSSTEST PATCH v2 04/41] SQL: Fix incorrect LIKE pattern syntax (program variables)
In two places the pattern for LIKE is constructed programmatically. In this case, too, we need to escape % and _. We pass the actual pattern (or pattern fragment) via ?, so we do not need to worry about '. Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- New in v2. --- Osstest.pm | 8 +++++++- Osstest/JobDB/Executive.pm | 2 +- sg-report-host-history | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Osstest.pm b/Osstest.pm index 63dddd95..b2b6b741 100644 --- a/Osstest.pm +++ b/Osstest.pm @@ -39,7 +39,7 @@ BEGIN { main_revision_job_cond other_revision_job_suffix $dbh_tests db_retry db_retry_retry db_retry_abort db_readonly_report - db_begin_work db_prepare + db_begin_work db_prepare db_quote_like_pattern get_harness_rev blessing_must_not_modify_host ensuredir get_filecontents_core_quiet system_checked nonempty visible_undef show_abs_time @@ -358,6 +358,12 @@ sub postfork () { $mjobdb->jobdb_postfork(); } +sub db_quote_like_pattern ($) { + local ($_) = @_; + s{[_%\\]}{\\$&}g; + $_; +} + #---------- script entrypoints ---------- sub csreadconfig () { diff --git a/Osstest/JobDB/Executive.pm b/Osstest/JobDB/Executive.pm index be5588fc..39deb8a2 100644 --- a/Osstest/JobDB/Executive.pm +++ b/Osstest/JobDB/Executive.pm @@ -143,7 +143,7 @@ sub _check_testdbs ($) { AND live AND username LIKE (? || '@%') END - $sth->execute($c{Username}); + $sth->execute(db_quote_like_pattern($c{Username})); my $allok = 1; while (my $row = $sth->fetchrow_hashref()) { next if $row->{dbname} =~ m/^$re$/o; diff --git a/sg-report-host-history b/sg-report-host-history index 7505b18b..9730ae7a 100755 --- a/sg-report-host-history +++ b/sg-report-host-history @@ -380,7 +380,8 @@ END $runvarq_hits++; } else { $runvarq_misses++; - $jrunvarq->execute($jr->{flight}, $jr->{job}, $ident); + $jrunvarq->execute($jr->{flight}, $jr->{job}, + db_quote_like_pattern($ident)); my %runvars; while (my ($n, $v) = $jrunvarq->fetchrow_array()) { $runvars{$n} = $v; -- 2.20.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |