SHA256
1
0
forked from pool/atftp
OBS User unknown 2008-04-03 23:24:41 +00:00 committed by Git OBS Bridge
parent 339300bf98
commit 9d51b3b66e
3 changed files with 194 additions and 35 deletions

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Thu Apr 3 15:57:09 CEST 2008 - mrueckert@suse.de
- added atftpd-0.7_unprotected_assignments_crash.patch: (bnc#291884)
under high load atftpd dies as data access wasnt always protected
with a mutex.
-------------------------------------------------------------------
Thu Jun 21 15:37:53 CEST 2007 - adrian@suse.de

View File

@ -1,7 +1,7 @@
#
# spec file for package atftp (Version 0.7.0)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
@ -10,17 +10,18 @@
# norootforbuild
Name: atftp
%define pkg_version 0.7
Version: 0.7.0
Release: 48
License: GNU General Public License (GPL)
Release: 96
License: GPL v2 or later
Group: System/Daemons
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: readline-devel tcpd-devel
PreReq: %insserv_prereq %fillup_prereq
Conflicts: tftp
URL: ftp://ftp.mamalinux.com/pub/atftp/
Url: ftp://ftp.mamalinux.com/pub/atftp/
Source: %{name}-%{pkg_version}.tar.bz2
Source1: atftpd.init.d
Source2: atftpd.sysconfig
@ -30,6 +31,7 @@ Patch3: atftp-0.7_compiler_warnings.patch
Patch4: atftp-0.7_thread_crash.patch
Patch5: atftp-0.7_sol_ip.patch
Patch6: atftp-0.7_bug-213384_OPT_NUMBER.patch
Patch7: atftpd-0.7_unprotected_assignments_crash.patch
#
Summary: Advanced TFTP Server and Client
@ -57,6 +59,7 @@ Authors:
%patch4
%patch5
%patch6
%patch7
%build
autoreconf -fi
@ -99,13 +102,17 @@ autoreconf -fi
%dir %attr(-,nobody,nogroup) /var/run/atftpd/
%changelog
* Thu Jun 21 2007 - adrian@suse.de
* Thu Apr 03 2008 mrueckert@suse.de
- added atftpd-0.7_unprotected_assignments_crash.patch: (bnc#291884)
under high load atftpd dies as data access wasnt always protected
with a mutex.
* Thu Jun 21 2007 adrian@suse.de
- fix changelog entry order
* Mon Jan 22 2007 - mrueckert@suse.de
* Mon Jan 22 2007 mrueckert@suse.de
- added atftp-0.7_bug-213384_OPT_NUMBER.patch:
"atftpd incorrectly sends OACK (option acknowledge) packets"
(#213384,#80441)
* Mon Jul 31 2006 - mrueckert@suse.de
* Mon Jul 31 2006 mrueckert@suse.de
- added /var/run/atftpd/ (0755,nobody,nogroup):
at ftp can finally create pid files
the default pid file for a single instance will be
@ -115,12 +122,12 @@ autoreconf -fi
* new sysconfig variable ATFTPD_BIND_ADDRESSES: whitespace
seperated list of ip addresses.
* each instance has its own pid file /var/run/atftpd/$ip.pid
* Sat Jul 01 2006 - mrueckert@suse.de
* Sat Jul 01 2006 mrueckert@suse.de
- bump the version number to 0.7.0:
This fix is needed because 0.7 < 0.7cvs. Replaced %%{version}
with %%{pkg_version} everywhere. %%{pkg_version} holds the original
value of 0.7.
* Thu Mar 30 2006 - mrueckert@suse.de
* Thu Mar 30 2006 mrueckert@suse.de
- added atftp-0.7_compiler_warnings.patch:
o missing include of pthread.h
o make the the 1st parameter of tftp_mtftp_missed_packet
@ -134,32 +141,32 @@ autoreconf -fi
- updated atftp-0.7.dif:
o really always run through the whole bitmap to find old holes.
(bug #148779, #65660)
* Wed Jan 25 2006 - mls@suse.de
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Tue Dec 20 2005 - ro@suse.de
* Tue Dec 20 2005 ro@suse.de
- define CLK_TCK if not already done
* Thu Mar 03 2005 - nashif@suse.de
* Thu Mar 03 2005 nashif@suse.de
- Applied patch from #65660: transfer breaks down if packets get
dropped
* Thu Mar 03 2005 - nashif@suse.de
* Thu Mar 03 2005 nashif@suse.de
- According to #65660 memory allocation issue not present anymore
* Sun Feb 13 2005 - nashif@suse.de
* Sun Feb 13 2005 nashif@suse.de
- fixed segfault on x86_64
* Tue Nov 16 2004 - ro@suse.de
* Tue Nov 16 2004 ro@suse.de
- merge old changelog entries (after checking all fixes are here)
- removed also destdir.patch (included upstream)
* Fri Nov 12 2004 - jhargado@suse.de
* Fri Nov 12 2004 jhargado@suse.de
- Added a patch to fix a problem where if a client requests a file
that doesn't exist, sometimes the daemon would exit without warning.
The .7 version of atftp is needed in SLRS to allow HA functionality.
This package is only included in the SLRS distribution.
* Sat Sep 11 2004 - kukuk@suse.de
* Sat Sep 11 2004 kukuk@suse.de
- Adjust to new glibc __THROW define
* Mon Apr 12 2004 - nashif@suse.de
* Mon Apr 12 2004 nashif@suse.de
- update to 0.7 final
- when called in batch mode, return right exit code if
operation fails.
* Tue Mar 09 2004 - ms@suse.de
* Tue Mar 09 2004 ms@suse.de
- include timeout patch:
We finally got a network trace with
the ACKs included. When the client fails the checksum, it stops acking
@ -176,42 +183,42 @@ autoreconf -fi
download), we noticed the server code has the same timeout scheme so Dan
also added this code to reset the timeout counter when good packets were
received. These fixes look solid, even under error conditions.
* Mon Mar 01 2004 - nashif@suse.de
* Mon Mar 01 2004 nashif@suse.de
- Update to 0.7 cvs
* Thu Feb 19 2004 - kukuk@suse.de
* Thu Feb 19 2004 kukuk@suse.de
- Cleanup neededforbuild
* Wed Feb 04 2004 - ms@suse.de
* Wed Feb 04 2004 ms@suse.de
- according to Anas Nashif <nashif@suse.de> the current version
0.6.2 includes the fix for bug (#27341). buffer overflow when a long
filename is sent to the server
* Wed Feb 04 2004 - ms@suse.de
* Wed Feb 04 2004 ms@suse.de
- include version 0.6.2 to SLES8 includes important multicast
fixes related to project Point-of-Sale (#34074)
* Sat Jan 10 2004 - adrian@suse.de
* Sat Jan 10 2004 adrian@suse.de
- build as user
* Fri Aug 29 2003 - nashif@suse.de
* Fri Aug 29 2003 nashif@suse.de
- Provide default tftp directory
* Fri Aug 01 2003 - nashif@suse.de
* Fri Aug 01 2003 nashif@suse.de
- update to 0.6.2
- Fixes bug #27341
- Readded conflict to tftp
* Wed May 28 2003 - nashif@suse.de
* Wed May 28 2003 nashif@suse.de
- Removed conflict to tftp
- added manpages as doc files
* Mon May 26 2003 - lmuelle@suse.de
* Mon May 26 2003 lmuelle@suse.de
- Remove set -e from init script; exit with rc 5 if binary is not installed
* Wed Jan 01 2003 - nashif@suse.de
* Wed Jan 01 2003 nashif@suse.de
- Fixed bug #22614: missing metadata in sysconfig template
* Sat Sep 14 2002 - nashif@suse.de
* Sat Sep 14 2002 nashif@suse.de
- Added missing restart to init script
* Fri Aug 30 2002 - nashif@suse.de
* Fri Aug 30 2002 nashif@suse.de
- Fixed bug #18661: Removed ; from sysconfig file
* Sat Aug 17 2002 - nashif@suse.de
* Sat Aug 17 2002 nashif@suse.de
- Fixed bug #17793: Added PreReq
- Fixed init script output
* Sun Jun 09 2002 - nashif@suse.de
* Sun Jun 09 2002 nashif@suse.de
- Update to version 0.6.1.1
* Sat Apr 13 2002 - nashif@suse.de
* Sat Apr 13 2002 nashif@suse.de
- Use tftp_LDADD for libraries instead of LDFLAGS
* Sat Mar 23 2002 - nashif@suse.de
* Sat Mar 23 2002 nashif@suse.de
- Initial release (0.50)

View File

@ -0,0 +1,145 @@
Index: tftpd_list.c
===================================================================
--- tftpd_list.c.orig 2007-09-18 18:14:46.182187192 +0200
+++ tftpd_list.c 2007-09-18 18:19:50.072480431 +0200
@@ -49,11 +49,11 @@ pthread_mutex_t thread_list_mutex = PTHR
*/
int tftpd_list_add(struct thread_data *new)
{
- struct thread_data *current = thread_data;
+ struct thread_data *current;
int ret;
pthread_mutex_lock(&thread_list_mutex);
-
+ current = thread_data;
number_of_thread++;
ret = number_of_thread;
@@ -81,11 +81,13 @@ int tftpd_list_add(struct thread_data *n
*/
int tftpd_list_remove(struct thread_data *old)
{
- struct thread_data *current = thread_data;
+ struct thread_data *current;
int ret;
pthread_mutex_lock(&thread_list_mutex);
+ current = thread_data;
+
number_of_thread--;
ret = number_of_thread;
@@ -137,23 +139,26 @@ int tftpd_list_find_multicast_server_and
struct thread_data *data,
struct client_info *client)
{
- struct thread_data *current = thread_data; /* head of the list */
- struct tftp_opt *tftp_options = data->tftp_options;
+ struct thread_data *current; /* head of the list */
+ struct tftp_opt *tftp_options;
struct client_info *tmp;
char options[MAXLEN];
char string[MAXLEN];
char *index;
size_t len;
+ /* lock the whole list before walking it */
+ pthread_mutex_lock(&thread_list_mutex);
+
*thread = NULL;
+ current = thread_data;
+ tftp_options = data->tftp_options;
+
opt_request_to_string(tftp_options, options, MAXLEN);
index = strstr(options, "multicast");
len = (size_t)(index - options);
- /* lock the whole list before walking it */
- pthread_mutex_lock(&thread_list_mutex);
-
while (current)
{
if (current != data)
@@ -215,9 +220,10 @@ inline void tftpd_clientlist_ready(struc
void tftpd_clientlist_remove(struct thread_data *thread,
struct client_info *client)
{
- struct client_info *tmp = thread->client_info;
+ struct client_info *tmp;
pthread_mutex_lock(&thread->client_mutex);
+ tmp = thread->client_info;
while ((tmp->next != client) && (tmp->next != NULL))
tmp = tmp->next;
if (tmp->next == NULL)
@@ -232,9 +238,11 @@ void tftpd_clientlist_remove(struct thre
void tftpd_clientlist_free(struct thread_data *thread)
{
struct client_info *tmp;
- struct client_info *head = thread->client_info;
+ struct client_info *head;
pthread_mutex_lock(&thread->client_mutex);
+ head = thread->client_info;
+
while (head)
{
tmp = head;
@@ -251,9 +259,10 @@ int tftpd_clientlist_done(struct thread_
struct client_info *client,
struct sockaddr_in *sock)
{
- struct client_info *head = thread->client_info;
+ struct client_info *head;
pthread_mutex_lock(&thread->client_mutex);
+ head = thread->client_info;
if (client)
{
@@ -335,10 +344,10 @@ int tftpd_clientlist_next(struct thread_
void tftpd_list_kill_threads(void)
{
- struct thread_data *current = thread_data; /* head of list */
+ struct thread_data *current; /* head of list */
pthread_mutex_lock(&thread_list_mutex);
-
+ current = thread_data;
while (current != NULL)
{
Index: tftpd_mcast.c
===================================================================
--- tftpd_mcast.c.orig 2004-03-06 21:41:41.000000000 +0100
+++ tftpd_mcast.c 2007-09-18 18:16:54.705925936 +0200
@@ -51,9 +51,11 @@ struct tid *tid_list = NULL;
*/
int tftpd_mcast_get_tid(char **addr, short *port)
{
- struct tid *current = tid_list;
+ struct tid *current;
pthread_mutex_lock(&mcast_tid_list);
+ current = tid_list;
+
/* walk the list for a free tid */
while (current != NULL)
{
@@ -74,9 +76,11 @@ int tftpd_mcast_get_tid(char **addr, sho
int tftpd_mcast_free_tid(char *addr, short port)
{
- struct tid *current = tid_list;
+ struct tid *current;
pthread_mutex_lock(&mcast_tid_list);
+ current = tid_list;
+
while (current != NULL)
{
if ((current->used == 1) && (current->port == port) &&