winetest, winrash and new volunteers

Ferenc Wagner wferi at
Wed Mar 16 17:55:00 CST 2005

Steven Edwards <steven_ed4153 at> writes:

> Like how to get winetest and the server to talk to each
> other and what is needed in the build and url files.

programs/winetest/README contains some relevant information.

> Is there some good documentation on how winrash and
> winetest work and communicate with the server?  I am
> interested it in using it as part of the ReactOS build
> system.

Winetest sends back a single file to winetest.cgi, the one
which is linked from the summary page (report).

service.cgi is pretty much a mystery for me, too.  Let me
offer these hunks containing some of my experiences.  Be
careful with submitting requests to service.cgi, I strongly
suspect that it's easy to nuke the whole database with an
empty $publisher or $build...

Index: winetest/service.cgi
RCS file: /home/wine/tools/winetest/service.cgi,v
retrieving revision 1.24
diff -u -r1.24 service.cgi
--- winetest/service.cgi	14 Jul 2004 18:33:47 -0000	1.24
+++ winetest/service.cgi	16 Mar 2005 23:41:45 -0000
@@ -29,7 +29,7 @@
 # We rely on the server to have directories available for every
 # program that can be published.  For example, we need a winetest directory:
-#   winetest/
+#   $data_root/$publisher/winetest/
 #            <name>.url	contains url to find latest winetests at, must be
 #			writable
 #            url.mask	contains a reg ex to match against, only needs to 
@@ -112,6 +113,7 @@
 # removes the current release from disk
 sub releases_purge {
     my ($project) = @_;
+    # FIXME remove files of ALL publishers?  Too easy to get here!
     system("rm -f $data_root/*/$project/*.cookie");
     system("rm -f $data_root/*/$project/*.url");
@@ -179,6 +182,7 @@
     # FIXME: maybe we should check here that $build is sane
     # test if this is a valid publisher
+    # FIXME empty $publisher passes!
     if (opendir(IMD, "$data_root/$publisher/")) {
     } else {
@@ -193,6 +198,7 @@
 	return "Build is old, current build is $current_build";
     if ($build ne $current_build) {
+        # FIXME this is VERY dangerous without $build sanitizing.  releases_purge is broken, too.
@@ -208,6 +214,7 @@
     $cookie = &read_one_line("$lynx -source $url.sig |");
     # all is good, store the cookie, and URL now, this activetes the release
+    # FIXME isn't $cookie a binary fingerprint already?
     &write_file(">$base_path/$name.cookie", &md5sum($cookie));
     &write_file(">$base_path/$name.url", $url);
     &write_file(">>$data_root/$program.builds", $build);

More information about the wine-devel mailing list