Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
喜羊羊3508
Dak
提交
76377054
D
Dak
项目概览
喜羊羊3508
/
Dak
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dak
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
76377054
编写于
6月 22, 2002
作者:
J
James Troup
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Validate package name and version numbers. Add ~ as a non-taint character
上级
4b1f5830
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
9 deletion
+29
-9
jennifer
jennifer
+27
-7
utils.py
utils.py
+2
-2
未找到文件。
jennifer
浏览文件 @
76377054
...
...
@@ -2,7 +2,7 @@
#
Checks
Debian
packages
from
Incoming
#
Copyright
(
C
)
2000
,
2001
,
2002
James
Troup
<
james
@
nocrew
.
org
>
# $Id: jennifer,v 1.2
3 2002-06-09 17:32:31
troup Exp $
#
$
Id
:
jennifer
,
v
1.2
4
2002
-
06
-
22
22
:
34
:
35
troup
Exp
$
#
This
program
is
free
software
;
you
can
redistribute
it
and
/
or
modify
#
it
under
the
terms
of
the
GNU
General
Public
License
as
published
by
...
...
@@ -38,12 +38,14 @@ from types import *;
################################################################################
re_bad_diff
=
re
.
compile
(
"^[\-\+][\-\+][\-\+] /dev/null"
);
re_is_changes
=
re
.
compile
(
r
"(.+?)_(.+?)_(.+?)\.changes$"
);
re_is_changes
=
re
.
compile
(
r
"(.+?)_(.+?)_(.+?)\.changes$"
);
re_valid_version
=
re
.
compile
(
r
"^([0-9]+:)?[0-9A-Za-z\.\-\+:]+$"
);
re_valid_pkg_name
=
re
.
compile
(
r
"^[\dA-Za-z][\dA-Za-z\+\-\.]+$"
);
################################################################################
#
Globals
jennifer_version
=
"$Revision: 1.2
3
$"
;
jennifer_version
=
"$Revision: 1.2
4
$"
;
Cnf
=
None
;
Options
=
None
;
...
...
@@ -514,14 +516,26 @@ def check_files():
for field in [ "Package", "Architecture", "Version" ]:
if control.Find(field) == None:
reject("%s: No %s field in control." % (file, field));
# Can'
t
continue
continue
;
#
Ensure
the
package
name
matches
the
one
give
in
the
.
changes
if
not
changes
[
"binary"
].
has_key
(
control
.
Find
(
"Package"
,
""
)):
reject
(
"%s: control file lists name as `%s', which isn't in changes file."
%
(
file
,
control
.
Find
(
"Package"
,
""
)));
#
Validate
the
package
field
package
=
control
.
Find
(
"Package"
);
if
not
re_valid_pkg_name
.
match
(
package
):
reject
(
"%s: invalid package name '%s'."
%
(
file
,
package
));
#
Validate
the
version
field
version
=
control
.
Find
(
"Version"
);
if
not
re_valid_version
.
match
(
version
):
reject
(
"%s: invalid version number '%s'."
%
(
file
,
version
));
#
Ensure
the
architecture
of
the
.
deb
is
one
we
know
about
.
default_suite
=
Cnf
.
get
(
"Dinstall::DefaultSuite"
,
"Unstable"
)
architecture
=
control
.
Find
(
"Architecture"
,
""
);
architecture
=
control
.
Find
(
"Architecture"
);
if
architecture
not
in
Cnf
.
ValueList
(
"Suite::%s::Architectures"
%
(
default_suite
)):
reject
(
"Unknown architecture '%s'."
%
(
architecture
));
...
...
@@ -536,9 +550,9 @@ def check_files():
if
control
.
Find
(
"Priority"
)
!= None and files[file]["priority"] != "" and files[file]["priority"] != control.Find("Priority"):
reject
(
"%s control file lists priority as `%s', but changes file has `%s'."
%
(
file
,
control
.
Find
(
"Priority"
,
""
),
files
[
file
][
"priority"
]),
"Warning: "
);
files
[
file
][
"package"
]
=
control
.
Find
(
"Package"
)
;
files
[
file
][
"package"
]
=
package
;
files
[
file
][
"architecture"
]
=
architecture
;
files
[
file
][
"version"
]
=
control
.
Find
(
"Version"
)
;
files
[
file
][
"version"
]
=
version
;
files
[
file
][
"maintainer"
]
=
control
.
Find
(
"Maintainer"
,
""
);
if
file
[-
5
:]
==
".udeb"
:
files
[
file
][
"dbtype"
]
=
"udeb"
;
...
...
@@ -565,7 +579,7 @@ def check_files():
file_package
=
m
.
group
(
1
);
if
files
[
file
][
"package"
]
!= file_package:
reject
(
"%s: package part of filename (%s) does not match package name in the %s (%s)."
%
(
file
,
file_package
,
files
[
file
][
"dbtype"
],
files
[
file
][
"package"
]));
epochless_version
=
utils
.
re_no_epoch
.
sub
(
''
,
control
.
Find
(
"Version"
,
""
))
epochless_version
=
utils
.
re_no_epoch
.
sub
(
''
,
control
.
Find
(
"Version"
));
#
version
file_version
=
m
.
group
(
2
);
if
epochless_version
!= file_version:
...
...
@@ -741,6 +755,12 @@ def check_dsc ():
if not dsc.has_key(i):
reject("
Missing
field
`%
s
' in dsc file." % (i));
# Validate the source and version fields
if dsc.has_key("source") and not re_valid_pkg_name.match(dsc["source"]):
reject("%s: invalid source name '
%
s
'." % (file, dsc["source"]));
if dsc.has_key("version") and not re_valid_version.match(dsc["version"]):
reject("%s: invalid version number '
%
s
'." % (file, dsc["version"]));
# The dpkg maintainer from hell strikes again! Bumping the
# version number of the .dsc breaks extraction by stable'
s
#
dpkg
-
source
.
...
...
utils.py
浏览文件 @
76377054
# Utility functions
# Copyright (C) 2000, 2001, 2002 James Troup <james@nocrew.org>
# $Id: utils.py,v 1.4
7 2002-06-08 00:18:02
troup Exp $
# $Id: utils.py,v 1.4
8 2002-06-22 22:34:35
troup Exp $
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
...
...
@@ -29,7 +29,7 @@ re_issource = re.compile (r"(.+)_(.+?)\.(orig\.tar\.gz|diff\.gz|tar\.gz|dsc)$");
re_single_line_field
=
re
.
compile
(
r
"^(\S*)\s*:\s*(.*)"
);
re_multi_line_field
=
re
.
compile
(
r
"^\s(.*)"
);
re_taint_free
=
re
.
compile
(
r
"^[-+\.\w]+$"
);
re_taint_free
=
re
.
compile
(
r
"^[-+
~
\.\w]+$"
);
re_parse_maintainer
=
re
.
compile
(
r
"^\s*(\S.*\S)\s*\<([^\> \t]+)\>"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录