=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/server.c,v retrieving revision 1.24 retrieving revision 1.25 diff -c -r1.24 -r1.25 *** src/usr.bin/cvs/server.c 2005/10/14 13:46:36 1.24 --- src/usr.bin/cvs/server.c 2005/12/20 16:55:21 1.25 *************** *** 1,4 **** ! /* $OpenBSD: server.c,v 1.24 2005/10/14 13:46:36 moritz Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: server.c,v 1.25 2005/12/20 16:55:21 xsa Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 76,84 **** size_t len; char reqbuf[512]; ! if (argc != 1) { return (CVS_EX_USAGE); - } /* make sure standard in and standard out are line-buffered */ (void)setvbuf(stdin, NULL, _IOLBF, (size_t)0); --- 76,83 ---- size_t len; char reqbuf[512]; ! if (argc != 1) return (CVS_EX_USAGE); /* make sure standard in and standard out are line-buffered */ (void)setvbuf(stdin, NULL, _IOLBF, (size_t)0); *************** *** 89,107 **** "%s/cvs-serv%d", cvs_tmpdir, getpid()); if (l == -1 || l >= (int)sizeof(cvs_server_tmpdir)) { errno = ENAMETOOLONG; ! cvs_log(LP_ERRNO, "%s", cvs_server_tmpdir); ! return (CVS_EX_DATA); ! } ! ! if (mkdir(cvs_server_tmpdir, 0700) == -1) { ! cvs_log(LP_ERRNO, "failed to create temporary directory '%s'", cvs_server_tmpdir); - return (CVS_EX_FILE); } if (cvs_chdir(cvs_server_tmpdir) == -1) { ! cvs_rmdir(cvs_server_tmpdir); ! return (CVS_EX_FILE); } for (;;) { --- 88,104 ---- "%s/cvs-serv%d", cvs_tmpdir, getpid()); if (l == -1 || l >= (int)sizeof(cvs_server_tmpdir)) { errno = ENAMETOOLONG; ! fatal("cvs_server: tmpdir path too long: `%s'", cvs_server_tmpdir); } + if (mkdir(cvs_server_tmpdir, 0700) == -1) + fatal("cvs_server: mkdir: `%s': %s", + cvs_server_tmpdir, strerror(errno)); + if (cvs_chdir(cvs_server_tmpdir) == -1) { ! (void)cvs_rmdir(cvs_server_tmpdir); ! fatal("cvs_server: cvs_chdir failed"); } for (;;) { *************** *** 109,116 **** if (feof(stdin)) break; else if (ferror(stdin)) { ! cvs_rmdir(cvs_server_tmpdir); ! return (CVS_EX_DATA); } } --- 106,113 ---- if (feof(stdin)) break; else if (ferror(stdin)) { ! (void)cvs_rmdir(cvs_server_tmpdir); ! fatal("cvs_server: fgets failed"); } } *************** *** 118,126 **** if (len == 0) 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'; --- 115,122 ---- if (len == 0) continue; else if (reqbuf[len - 1] != '\n') { ! (void)cvs_rmdir(cvs_server_tmpdir); ! fatal("cvs_server: truncated request"); } reqbuf[--len] = '\0';