=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/server.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- src/usr.bin/cvs/server.c 2005/08/14 19:49:18 1.23 +++ src/usr.bin/cvs/server.c 2005/10/14 13:46:36 1.24 @@ -1,4 +1,4 @@ -/* $OpenBSD: server.c,v 1.23 2005/08/14 19:49:18 xsa Exp $ */ +/* $OpenBSD: server.c,v 1.24 2005/10/14 13:46:36 moritz Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. @@ -99,15 +99,19 @@ return (CVS_EX_FILE); } - if (cvs_chdir(cvs_server_tmpdir) == -1) + if (cvs_chdir(cvs_server_tmpdir) == -1) { + cvs_rmdir(cvs_server_tmpdir); return (CVS_EX_FILE); + } for (;;) { if (fgets(reqbuf, (int)sizeof(reqbuf), stdin) == NULL) { if (feof(stdin)) break; - else if (ferror(stdin)) + else if (ferror(stdin)) { + cvs_rmdir(cvs_server_tmpdir); return (CVS_EX_DATA); + } } len = strlen(reqbuf); @@ -115,6 +119,7 @@ continue; else if (reqbuf[len - 1] != '\n') { cvs_log(LP_ERR, "truncated request"); + cvs_rmdir(cvs_server_tmpdir); return (CVS_EX_PROTO); } reqbuf[--len] = '\0';