{"id":5,"date":"2005-03-07T09:22:22","date_gmt":"2005-03-07T13:22:22","guid":{"rendered":"http:\/\/blogs.law.harvard.edu\/rlucastemp\/2005\/03\/07\/cvspermissions-03-patched-to-fix-g"},"modified":"2005-03-07T09:22:22","modified_gmt":"2005-03-07T13:22:22","slug":"cvspermissions-03-patched-to-fix-grep-bug","status":"publish","type":"post","link":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/2005\/03\/07\/cvspermissions-03-patched-to-fix-grep-bug\/","title":{"rendered":"CVSPermissions 0.3 patched to fix grep bug"},"content":{"rendered":"<p><a name='a67'><\/a><\/p>\n<p>CVSPermissions is a set of scripts that are called by CVS upon invoking<br \/>\ncertain operations, such as commit (wisely, CVS has hooks for just this<br \/>\npurpose).&nbsp; The scripts check an access control list, and<br \/>\nselectively permit operations based on username.&nbsp; Unfortunately,<br \/>\nwhile the scripts come pretty elegantly close to &#8220;the simplest thing<br \/>\nthat could possibly work,&#8221; they use grep without considering its<br \/>\npropensity for matching substrings within a string, so user &#8220;lou&#8221; will<br \/>\nmatch the ACL entry for &#8220;alouicious.&#8221;&nbsp; The solution is adding ^<br \/>\nand $ around the grep regexes, which I have done in the attached<br \/>\ntarball.<\/p>\n<p>I haven&#8217;t heard back from Vivek Venugopalan, the author of<br \/>\nCVSPermissions, about the bug.&nbsp; So, I am providing CVSPermissions<br \/>\nv 0.3-rlucas-1 with my patches.&nbsp; GNU GPL applies and AS-IS; I have<br \/>\ntested only on GNU\/Linux with CVS 1.12.9 and GNU grep 2.5.1.<\/p>\n<p>http:\/\/cyber.law.harvard.edu\/blogs\/gems\/rlucas\/cvspermissions0.3rlucas1.tar.gz<\/p>\n<p>Happily, this is an open source success story.&nbsp; Boy meets slightly<br \/>\nbroken but otherwise perfect software, boy fixes software, software<br \/>\nhelps boy do work, boy gives software back to the world.&nbsp; It<br \/>\nbrings tears to my eyes.<\/p>\n<p><span style=\"font-weight: bold;\">Update 2005-12-01:<\/span> Vivek has emailed back and incorporated the changes; get the latest version at: http:\/\/www.sanchivi.com\/cm\/cvspermissions\/<\/p>\n<p><a href='http:\/\/cyber.law.harvard.edu\/blogs\/gems\/rlucas\/cvspermissions0.3rlucas1.tar.gz'>CVSPermissions 0.3 patched to fix grep bug &#8230;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>CVSPermissions is a set of scripts that are called by CVS upon invoking certain operations, such as commit (wisely, CVS has hooks for just this purpose).&nbsp; The scripts check an access control list, and selectively permit operations based on username.&nbsp; Unfortunately, while the scripts come pretty elegantly close to &#8220;the simplest thing that could possibly [&hellip;]<\/p>\n","protected":false},"author":1180,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/posts\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/users\/1180"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":0,"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/posts\/5\/revisions"}],"wp:attachment":[{"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/media?parent=5"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/categories?post=5"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/rlucastemp\/wp-json\/wp\/v2\/tags?post=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}