diff options
author | Unknwon <joe2010xtmf@163.com> | 2014-10-25 07:50:19 -0400 |
---|---|---|
committer | Unknwon <joe2010xtmf@163.com> | 2014-10-25 07:50:19 -0400 |
commit | 83283bca4cb4e0f4ec48a28af680f0d88db3d2c8 (patch) | |
tree | 665b81c242a4d92811568367eb53dc3ba5eb1247 /models/repo.go | |
parent | f1d87462642aa0ab4ce61e8a285e3a288b4dc119 (diff) | |
download | gitea-83283bca4cb4e0f4ec48a28af680f0d88db3d2c8.tar.gz gitea-83283bca4cb4e0f4ec48a28af680f0d88db3d2c8.zip |
Safe work
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/models/repo.go b/models/repo.go index dc47b2e6e9..888dea1ea6 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1131,17 +1131,21 @@ type SearchOption struct { Keyword string Uid int64 Limit int + Private bool +} + +// FilterSQLInject tries to prevent SQL injection. +func FilterSQLInject(key string) string { + key = strings.TrimSpace(key) + key = strings.Split(key, " ")[0] + key = strings.Replace(key, ",", "", -1) + return key } // SearchRepositoryByName returns given number of repositories whose name contains keyword. func SearchRepositoryByName(opt SearchOption) (repos []*Repository, err error) { // Prevent SQL inject. - opt.Keyword = strings.TrimSpace(opt.Keyword) - if len(opt.Keyword) == 0 { - return repos, nil - } - - opt.Keyword = strings.Split(opt.Keyword, " ")[0] + opt.Keyword = FilterSQLInject(opt.Keyword) if len(opt.Keyword) == 0 { return repos, nil } @@ -1154,6 +1158,9 @@ func SearchRepositoryByName(opt SearchOption) (repos []*Repository, err error) { if opt.Uid > 0 { sess.Where("owner_id=?", opt.Uid) } + if !opt.Private { + sess.And("is_private=false") + } sess.And("lower_name like '%" + opt.Keyword + "%'").Find(&repos) return repos, err } |