[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: [RFC PATCH 1/1] patch: Fix to error out for invalid patch
From: Athira Rajeev <atrajeev () linux ! vnet ! ibm ! com>
Date: 2016-02-26 14:09:28
Message-ID: 616E57EE-1B37-434D-BDDD-5C9B8D5DC617 () linux ! vnet ! ibm ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
When given an invalid patch, busybox reports zero exit code even if the patch is not applied.
With GNU patch, the behaviour is:
# patch < test.patch
patch: **** Only garbage was found in the patch input.
With busybox patch, I get the following output:
busybox patch < test.patch
[root@localhost ~]# echo $?
0
Input patch file contents:
==================
cat test.patch:
-- test.c.org 2015-07-15 11:27:51.100000000 +0000
++ test.c 2015-07-15 11:28:11.189000000 +0000
@@ -1,8 +1,8 @@
#include <stdio.h>
int main()
{
- int i;
- for (int j ; j <10; j++)
+ int i,j;
+ for (j ; j <10; j++)
{
printf("j is %d\n", j);
}
and test.c file contents:
# cat test.c
#include <stdio.h>
int main()
{
int i;
for (int j ; j <10; j++)
{
printf("j is %d\n", j);
}
}
busybox code loops through patchlines and check for +++, switches state when patches found.
// state 0: Not in a hunk, look for +++.
// state 1: Found +++ file indicator, look for @@
// state 2: In hunk: counting initial context lines
// state 3: In hunk: getting body
state 2 implies code is getting into the hunk.
Loop exits if patchline is empty
Adding a patch which has following changes:
- When state is 2, set patch_found to true ( implies a valid patch exists )
- when patchline is NULL, ( i.e. when end of patch is reached ), set exitval to 1 if:
patchfile size is non-zero ( that means some content is there in the patch file )
and patch_found is false ( that means no valid patches were found )
Signed-off-by: Athira Rajeev<atrajeev@linux.vnet.ibm.com>
diff --git a/editors/patch.c b/editors/patch.c
index 988021d..6bfdf19 100644
--- a/editors/patch.c
+++ b/editors/patch.c
@@ -352,11 +352,13 @@ int patch_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int patch_main(int argc UNUSED_PARAM, char **argv)
{
int opts;
- int reverse, state = 0;
+ int reverse, size, state = 0;
+ bool patch_found = false;
char *oldname = NULL, *newname = NULL;
char *opt_p, *opt_i;
long oldlen = oldlen; /* for compiler */
long newlen = newlen; /* for compiler */
+ struct stat buf;
INIT_TT();
@@ -373,12 +375,22 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
}
}
+ // Get the file size using fstat
+ fstat(STDIN_FILENO, &buf);
+ size = buf.st_size;
+
// Loop through the lines in the patch
for(;;) {
char *patchline;
patchline = xmalloc_fgetline(stdin);
- if (!patchline) break;
+ if (!patchline) {
+ if (size !=0 && !patch_found) {
+ printf("Couldnt find a valid patch. \n");
+ TT.exitval = 1;
+ }
+ break;
+ }
// Other versions of patch accept damaged patches,
// so we need to also.
@@ -460,6 +472,9 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
TT.context = 0;
state = 2;
+ // In hunk, found unified diff, set patch_found
+ patch_found = true;
+
// If the --- line is missing or malformed, either oldname
// or (for -R) newname could be NULL -- but not both. Like
// GNU patch, proceed based on the +++ line, and avoid SEGVs.
[Attachment #5 (unknown)]
<html><head><meta http-equiv="Content-Type" content="text/html \
charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: \
space; -webkit-line-break: after-white-space;" class=""><pre class="bz_comment_text" \
id="comment_text_14"><span style="font-family: Menlo; background-color: rgb(253, 253, \
253); font-size: 11px;" class="">When given an invalid patch, busybox reports zero \
exit code even if the patch is not applied.</span></pre><pre class="bz_comment_text" \
id="comment_text_14"><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">With GNU patch, \
the behaviour is:</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""># patch < test.patch </span></div><div style="margin: 0px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><span \
style="font-size: 11px;" class="">patch: **** Only garbage was found in the patch \
input.</span></div></pre><div class=""><span style="font-size: 11px;" class=""><br \
class=""></span></div><div class=""><span style="font-size: 11px;" class="">With \
busybox patch, I get the following output:</span></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">busybox patch < \
test.patch </span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">[root@localhost ~]# echo $?</span></div><div style="margin: 0px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><span \
style="font-size: 11px;" class="">0</span></div></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><span \
style="font-size: 11px;" class="">Input patch file contents:</span></div><div \
class=""><span style="font-size: 11px;" class="">==================</span></div><div \
class=""><span style="font-size: 11px;" class=""><br class=""></span></div><div \
class=""><div style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, \
253);" class=""><span style="font-size: 11px;" class="">cat \
test.patch:</span></div></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div class=""><div style="margin: 0px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><span \
style="font-size: 11px;" class="">-- <a href="http://test.c.org" \
class="">test.c.org</a><span class="Apple-tab-span" \
style="white-space:pre"> </span>2015-07-15 11:27:51.100000000 +0000</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">++ test.c<span \
class="Apple-tab-span" style="white-space:pre"> </span>2015-07-15 11:28:11.189000000 \
+0000</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">@@ -1,8 +1,8 \
@@</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class=""> #include \
<stdio.h></span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""> int main()</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""> {</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">-<span class="Apple-tab-span" style="white-space:pre"> </span>int \
i;</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">-<span \
class="Apple-tab-span" style="white-space:pre"> </span>for (int j ; j <10; \
j++)</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class="">+<span \
class="Apple-tab-span" style="white-space:pre"> </span>int i,j;</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>for (j ; j <10; j++)</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>{</span></div><div style="margin: 0px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>printf("j is %d\n", j);</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>}</span></div></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><span \
style="font-size: 11px;" class=""><br class=""></span></div><div class=""><span \
style="font-size: 11px;" class="">and test.c file contents:</span></div><div \
class=""><span style="font-size: 11px;" class=""><br class=""></span></div><div \
class=""><div style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, \
253);" class=""><span style="font-size: 11px;" class=""># cat \
test.c </span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">#include <stdio.h></span></div><div style="margin: 0px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">int main()</span></div><div style="margin: 0px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">{</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class=""><span \
class="Apple-tab-span" style="white-space:pre"> </span>int i;</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class=""><span class="Apple-tab-span" \
style="white-space:pre"> </span>for (int j ; j <10; j++)</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""><span style="font-size: 11px;" class=""><span class="Apple-tab-span" \
style="white-space:pre"> </span>{</span></div><div style="margin: 0px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class=""><span class="Apple-tab-span" style="white-space:pre"> </span>printf("j is \
%d\n", j);</span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" class=""><span \
class="Apple-tab-span" style="white-space:pre"> </span>}</span></div><div \
style="margin: 0px; font-family: Menlo; background-color: rgb(253, 253, 253); \
min-height: 13px;" class=""><span style="font-size: 11px;" class=""><br \
class=""></span></div><div style="margin: 0px; font-family: Menlo; background-color: \
rgb(253, 253, 253);" class=""><span style="font-size: 11px;" \
class="">}</span></div></div><div class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div class=""><span style="font-size: 11px;" \
class=""><br class=""></span></div><div class=""><pre class="bz_comment_text" \
id="comment_text_14"><span style="font-size: 11px;" class="">busybox code loops \
through patchlines and check for +++, switches state when patches found.
// state 0: Not in a hunk, look for +++.
// state 1: Found +++ file indicator, look for @@
// state 2: In hunk: counting initial context lines
// state 3: In hunk: getting body
state 2 implies code is getting into the hunk.
Loop exits if patchline is empty
Adding a patch which has following changes:
- When state is 2, set patch_found to true ( implies a valid patch exists )
- when patchline is NULL, ( i.e. when end of patch is reached ), set exitval to 1 \
if: patchfile size is non-zero ( that means some content is there in the patch file \
) and patch_found is false ( that means no valid patches were found \
)</span></pre><div class=""><br class=""></div></div><div class="">Signed-off-by: \
Athira Rajeev<<a href="mailto:atrajeev@linux.vnet.ibm.com" \
class="">atrajeev@linux.vnet.ibm.com</a>></div><div class=""><br \
class=""></div><div class=""><br class=""></div><div class=""><div style="margin: \
0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">diff --git a/editors/patch.c b/editors/patch.c</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">index 988021d..6bfdf19 100644</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">--- \
a/editors/patch.c</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+++ b/editors/patch.c</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">@@ -352,11 +352,13 @@ int patch_main(int argc, char **argv) \
MAIN_EXTERNALLY_VISIBLE;</div><div style="margin: 0px; font-size: 11px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class=""> int patch_main(int argc \
UNUSED_PARAM, char **argv)</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""> {</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>int opts;</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class="">-<span \
class="Apple-tab-span" style="white-space:pre"> </span>int reverse, state = \
0;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>int reverse, size, state = 0;</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>bool patch_found = false;</div><div style="margin: \
0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""> <span class="Apple-tab-span" style="white-space:pre"> </span>char \
*oldname = NULL, *newname = NULL;</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""> <span \
class="Apple-tab-span" style="white-space:pre"> </span>char *opt_p, *opt_i;</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>long oldlen = oldlen; /* for compiler */</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>long newlen = newlen; /* for compiler */</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>struct stat buf;</div><p style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253); \
min-height: 13px;" class=""> <br class="webkit-block-placeholder"></p><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>INIT_TT();</div><p style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253); min-height: 13px;" \
class=""> <br class="webkit-block-placeholder"></p><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">@@ -373,12 +375,22 @@ int patch_main(int argc UNUSED_PARAM, char \
**argv)</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>}</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""> <span \
class="Apple-tab-span" style="white-space:pre"> </span>}</div><p style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253); \
min-height: 13px;" class=""> <br class="webkit-block-placeholder"></p><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" style="white-space:pre"> </span>// \
Get the file size using fstat</div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">+<span \
class="Apple-tab-span" style="white-space:pre"> </span>fstat(STDIN_FILENO, \
&buf);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>size = buf.st_size;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>// Loop through the lines in the patch</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>for(;;) {</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class=""> <span \
class="Apple-tab-span" style="white-space:pre"> </span>char *patchline;</div><p \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253); min-height: 13px;" class=""> <br \
class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""> <span \
class="Apple-tab-span" style="white-space:pre"> </span>patchline = \
xmalloc_fgetline(stdin);</div><div style="margin: 0px; font-size: 11px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class="">-<span class="Apple-tab-span" \
style="white-space:pre"> </span>if (!patchline) break;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+<span class="Apple-tab-span" style="white-space:pre"> </span>if \
(!patchline) {</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>if (size !=0 && !patch_found) {</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>printf("Couldnt find a valid patch. \
\n");</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>TT.exitval = 1;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+<span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>break;</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class="">+<span \
class="Apple-tab-span" style="white-space:pre"> </span>}<span class="Apple-tab-span" \
style="white-space:pre"> </span></div><p style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253); min-height: 13px;" \
class=""> <br class="webkit-block-placeholder"></p><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""> <span class="Apple-tab-span" style="white-space:pre"> </span>// Other \
versions of patch accept damaged patches,</div><div style="margin: 0px; font-size: \
11px; font-family: Menlo; background-color: rgb(253, 253, 253);" class=""> <span \
class="Apple-tab-span" style="white-space:pre"> </span>// so we need to \
also.</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class="">@@ -460,6 +472,9 @@ int \
patch_main(int argc UNUSED_PARAM, char **argv)</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>TT.context = 0;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class=""> <span class="Apple-tab-span" style="white-space:pre"> </span>state = \
2;</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: \
rgb(253, 253, 253); min-height: 13px;" class=""> <br \
class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class="">+<span \
class="Apple-tab-span" style="white-space:pre"> </span>// In hunk, found unified \
diff, set patch_found</div><div style="margin: 0px; font-size: 11px; font-family: \
Menlo; background-color: rgb(253, 253, 253);" class="">+<span class="Apple-tab-span" \
style="white-space:pre"> </span>patch_found = true;</div><div style="margin: 0px; \
font-size: 11px; font-family: Menlo; background-color: rgb(253, 253, 253);" \
class="">+</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>// If the --- line is missing or malformed, either \
oldname</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>// or (for -R) newname could be NULL -- but not \
both. Like</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""> <span class="Apple-tab-span" \
style="white-space:pre"> </span>// GNU patch, proceed based on the +++ line, and \
avoid SEGVs.</div></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; \
background-color: rgb(253, 253, 253);" class=""><br class=""></div><div \
style="margin: 0px; font-size: 11px; font-family: Menlo; background-color: rgb(253, \
253, 253);" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; \
font-family: Menlo; background-color: rgb(253, 253, 253);" class=""><br \
class=""></div><div class=""><br class=""></div></body></html>
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic