[viewvc-dev] running viewvc as a setuid cgi script

"Zvi Har'El" <[email protected]>
Newsgroups gmane.comp.version-control.cvs.viewcvs.devel
Organization Technion--Israel Institute of Technology
Message-ID <[email protected]>
Hi,


Because of my syste, configuration, I need to run viewvc as a setuid cgi
script. I created a small wrapper cgi which invokes viewvc with
effective uid != the real uid, which is apache's uid. I immediatly
encountered problem, because viewvc checks paths accessibility using the
real uid, not the effective, one, so I patched the code as follows:


--- lib/vclib/bincvs/__init__.py.~20070928091501~       2007-09-28
05:15:01.000000000 -0400
+++ lib/vclib/bincvs/__init__.py        2007-12-09 12:32:27.000000000 -0500
@@ -1026,7 +1026,7 @@
     return kind, errors
 
 else:
-  _uid = os.getuid()
+  _uid = os.geteuid()
   _gid = os.getgid()
 
   def _check_path(pathname):


It helped some, but not completely. I can view the whole CVS tree with
the revision numbers etc, and also clicking on (annotate) in the log of
each file. but, clicking on (view), gives me an exception trace, as follows:

Traceback (most recent call last):
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/viewvc.py", line 3665, in main
    request.run_viewvc()
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/viewvc.py", line 388, in run_viewvc
    self.view_func(self)
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/viewvc.py", line 1368, in view_markup
    fp, revision = request.repos.openfile(path, rev)
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/vclib/bincvs/__init__.py", line 134, in openfile
    filename, revision = _parse_co_header(fp)
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/vclib/bincvs/__init__.py", line 534, in _parse_co_header
    raise COMalformedOutput, "Unable to find filename in co output stream"
COMalformedOutput: Unable to find filename in co output stream

(download) gives a a similar exception trace:


Traceback (most recent call last):
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/viewvc.py", line 3665, in main
    request.run_viewvc()
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/viewvc.py", line 388, in run_viewvc
    self.view_func(self)
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/viewvc.py", line 2142, in view_checkout
    fp, revision = request.repos.openfile(path, rev)
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/vclib/bincvs/__init__.py", line 134, in openfile
    filename, revision = _parse_co_header(fp)
  File "/public/vhost/g/gilead/viewvc-1.0.4/lib/vclib/bincvs/__init__.py", line 534, in _parse_co_header
    raise COMalformedOutput, "Unable to find filename in co output stream"
COMalformedOutput: Unable to find filename in co output stream


Should I pursue this, or do you see inherent problems in running viewvc
as a setuid script?


Best,


Zvi

-- 
Dr. Zvi Har'El      mailto:[email protected]    Department of Mathematics
tel:+972-54-4227607                  Technion - Israel Institute of Technology
fax:+972-4-8293388  http://www.math.technion.ac.il/~rl/    Haifa 32000, ISRAEL
"If you can't say somethin' nice, don't say nothin' at all." -- Thumper (1942)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.