svn commit: trunk/busybox: e2fsprogs/old_e2fsprogs e2fsprogs/old_e2 etc...

vda at busybox.net vda at busybox.net
Mon Feb 2 10:48:07 UTC 2009


Author: vda
Date: 2009-02-02 10:48:06 +0000 (Mon, 02 Feb 2009)
New Revision: 25219

Log:
udhcpd: add code which rejects lease files with suspicious or old timestamp.
*: s/time(0)/time(NULL)/g



Modified:
   trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/devname.c
   trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/probe.c
   trunk/busybox/e2fsprogs/old_e2fsprogs/e2fsck.c
   trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/bb_inode.c
   trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/mkjournal.c
   trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/res_gdt.c
   trunk/busybox/networking/httpd.c
   trunk/busybox/networking/udhcp/dhcpd.c
   trunk/busybox/networking/udhcp/files.c
   trunk/busybox/runit/sv.c
   trunk/busybox/util-linux/rtcwake.c


Changeset:
Modified: trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/devname.c
===================================================================
--- trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/devname.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/devname.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -273,7 +273,7 @@
 		return -BLKID_ERR_PARAM;
 
 	if (cache->bic_flags & BLKID_BIC_FL_PROBED &&
-	    time(0) - cache->bic_time < BLKID_PROBE_INTERVAL)
+	    time(NULL) - cache->bic_time < BLKID_PROBE_INTERVAL)
 		return 0;
 
 	blkid_read_cache(cache);
@@ -335,7 +335,7 @@
 
 	fclose(proc);
 
-	cache->bic_time = time(0);
+	cache->bic_time = time(NULL);
 	cache->bic_flags |= BLKID_BIC_FL_PROBED;
 	blkid_flush_cache(cache);
 	return 0;

Modified: trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/probe.c
===================================================================
--- trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/probe.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/e2fsprogs/old_e2fsprogs/blkid/probe.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -562,7 +562,7 @@
 	if (!dev)
 		return NULL;
 
-	now = time(0);
+	now = time(NULL);
 	diff = now - dev->bid_time;
 
 	if ((now < dev->bid_time) ||
@@ -659,7 +659,7 @@
 found_type:
 	if (dev && type) {
 		dev->bid_devno = st.st_rdev;
-		dev->bid_time = time(0);
+		dev->bid_time = time(NULL);
 		dev->bid_flags |= BLKID_BID_FL_VERIFIED;
 		cache->bic_flags |= BLKID_BIC_FL_CHANGED;
 

Modified: trunk/busybox/e2fsprogs/old_e2fsprogs/e2fsck.c
===================================================================
--- trunk/busybox/e2fsprogs/old_e2fsprogs/e2fsck.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/e2fsprogs/old_e2fsprogs/e2fsck.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -2270,7 +2270,7 @@
 	ext2fs_mark_super_dirty(fs);
 	fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 	inode.i_links_count = 0;
-	inode.i_dtime = time(0);
+	inode.i_dtime = time(NULL);
 	if ((retval = ext2fs_write_inode(fs, ino, &inode)) != 0)
 		goto err_out;
 
@@ -3381,7 +3381,7 @@
 			 */
 			if (!LINUX_S_ISDIR(inode->i_mode)) {
 				if (fix_problem(ctx, PR_1_ROOT_NO_DIR, &pctx)) {
-					inode->i_dtime = time(0);
+					inode->i_dtime = time(NULL);
 					inode->i_links_count = 0;
 					ext2fs_icount_store(ctx->inode_link_info,
 							    ino, 0);
@@ -3475,7 +3475,7 @@
 		    inode->i_dtime < ctx->fs->super->s_inodes_count) {
 			if (fix_problem(ctx, PR_1_LOW_DTIME, &pctx)) {
 				inode->i_dtime = inode->i_links_count ?
-					0 : time(0);
+					0 : time(NULL);
 				e2fsck_write_inode(ctx, ino, inode,
 						   "pass1");
 			}
@@ -3489,7 +3489,7 @@
 			if (!inode->i_dtime && inode->i_mode) {
 				if (fix_problem(ctx,
 					    PR_1_ZERO_DTIME, &pctx)) {
-					inode->i_dtime = time(0);
+					inode->i_dtime = time(NULL);
 					e2fsck_write_inode(ctx, ino, inode,
 							   "pass1");
 				}
@@ -3659,7 +3659,7 @@
 		}
 		e2fsck_read_inode(ctx, EXT2_RESIZE_INO, inode,
 				  "recreate inode");
-		inode->i_mtime = time(0);
+		inode->i_mtime = time(NULL);
 		e2fsck_write_inode(ctx, EXT2_RESIZE_INO, inode,
 				  "recreate inode");
 		fs->block_map = save_bmap;
@@ -4169,7 +4169,7 @@
 	if (pb.clear) {
 		inode->i_links_count = 0;
 		ext2fs_icount_store(ctx->inode_link_info, ino, 0);
-		inode->i_dtime = time(0);
+		inode->i_dtime = time(NULL);
 		dirty_inode++;
 		ext2fs_unmark_inode_bitmap(ctx->inode_dir_map, ino);
 		ext2fs_unmark_inode_bitmap(ctx->inode_reg_map, ino);
@@ -4202,7 +4202,7 @@
 		if (fix_problem(ctx, PR_1_ZERO_LENGTH_DIR, pctx)) {
 			inode->i_links_count = 0;
 			ext2fs_icount_store(ctx->inode_link_info, ino, 0);
-			inode->i_dtime = time(0);
+			inode->i_dtime = time(NULL);
 			dirty_inode++;
 			ext2fs_unmark_inode_bitmap(ctx->inode_dir_map, ino);
 			ext2fs_unmark_inode_bitmap(ctx->inode_reg_map, ino);
@@ -5147,7 +5147,7 @@
 	/* Inode may have changed by block_iterate, so reread it */
 	e2fsck_read_inode(ctx, ino, &inode, "delete_file");
 	inode.i_links_count = 0;
-	inode.i_dtime = time(0);
+	inode.i_dtime = time(NULL);
 	if (inode.i_file_acl &&
 	    (fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_EXT_ATTR)) {
 		count = 1;
@@ -6393,7 +6393,7 @@
 	ext2fs_icount_store(ctx->inode_link_info, ino, 0);
 	e2fsck_read_inode(ctx, ino, &inode, "deallocate_inode");
 	inode.i_links_count = 0;
-	inode.i_dtime = time(0);
+	inode.i_dtime = time(NULL);
 	e2fsck_write_inode(ctx, ino, &inode, "deallocate_inode");
 	clear_problem_context(&pctx);
 	pctx.ino = ino;
@@ -6890,7 +6890,7 @@
 	memset(&inode, 0, sizeof(inode));
 	inode.i_mode = 040755;
 	inode.i_size = fs->blocksize;
-	inode.i_atime = inode.i_ctime = inode.i_mtime = time(0);
+	inode.i_atime = inode.i_ctime = inode.i_mtime = time(NULL);
 	inode.i_links_count = 2;
 	inode.i_blocks = fs->blocksize / 512;
 	inode.i_block[0] = blk;
@@ -7138,7 +7138,7 @@
 	memset(&inode, 0, sizeof(inode));
 	inode.i_mode = 040700;
 	inode.i_size = fs->blocksize;
-	inode.i_atime = inode.i_ctime = inode.i_mtime = time(0);
+	inode.i_atime = inode.i_ctime = inode.i_mtime = time(NULL);
 	inode.i_links_count = 2;
 	inode.i_blocks = fs->blocksize / 512;
 	inode.i_block[0] = blk;
@@ -7492,7 +7492,7 @@
 		if (fix_problem(ctx, PR_4_ZERO_LEN_INODE, &pctx)) {
 			ext2fs_icount_store(ctx->inode_link_info, i, 0);
 			inode.i_links_count = 0;
-			inode.i_dtime = time(0);
+			inode.i_dtime = time(NULL);
 			e2fsck_write_inode(ctx, i, &inode,
 					   "disconnect_inode");
 			/*
@@ -11558,7 +11558,7 @@
 		if (!inode.i_links_count) {
 			ext2fs_inode_alloc_stats2(fs, ino, -1,
 						  LINUX_S_ISDIR(inode.i_mode));
-			inode.i_dtime = time(0);
+			inode.i_dtime = time(NULL);
 		} else {
 			inode.i_dtime = 0;
 		}
@@ -12714,7 +12714,7 @@
 	unsigned int reason_arg = 0;
 	long next_check;
 	int batt = is_on_batt();
-	time_t now = time(0);
+	time_t now = time(NULL);
 
 	if ((ctx->options & E2F_OPT_FORCE) || cflag || swapfs)
 		return;

Modified: trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/bb_inode.c
===================================================================
--- trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/bb_inode.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/bb_inode.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -125,9 +125,9 @@
 	if (retval)
 		goto cleanup;
 
-	inode.i_atime = inode.i_mtime = time(0);
+	inode.i_atime = inode.i_mtime = time(NULL);
 	if (!inode.i_ctime)
-		inode.i_ctime = time(0);
+		inode.i_ctime = time(NULL);
 	inode.i_blocks = rec.bad_block_count * (fs->blocksize / 512);
 	inode.i_size = rec.bad_block_count * fs->blocksize;
 

Modified: trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/mkjournal.c
===================================================================
--- trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/mkjournal.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/mkjournal.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -231,7 +231,7 @@
 
 	inode.i_size += fs->blocksize * size;
 	inode.i_blocks += (fs->blocksize / 512) * es.newblocks;
-	inode.i_mtime = inode.i_ctime = time(0);
+	inode.i_mtime = inode.i_ctime = time(NULL);
 	inode.i_links_count = 1;
 	inode.i_mode = LINUX_S_IFREG | 0600;
 

Modified: trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/res_gdt.c
===================================================================
--- trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/res_gdt.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/e2fsprogs/old_e2fsprogs/ext2fs/res_gdt.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -117,7 +117,7 @@
 			sb->s_feature_ro_compat |=
 				EXT2_FEATURE_RO_COMPAT_LARGE_FILE;
 		}
-		inode.i_ctime = time(0);
+		inode.i_ctime = time(NULL);
 	}
 
 	for (rsv_off = 0, gdt_off = fs->desc_blocks,
@@ -209,7 +209,7 @@
 	       inode.i_size);
 #endif
 	if (inode_dirty) {
-		inode.i_atime = inode.i_mtime = time(0);
+		inode.i_atime = inode.i_mtime = time(NULL);
 		retval2 = ext2fs_write_inode(fs, EXT2_RESIZE_INO, &inode);
 		if (!retval)
 			retval = retval2;

Modified: trunk/busybox/networking/httpd.c
===================================================================
--- trunk/busybox/networking/httpd.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/networking/httpd.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -969,7 +969,7 @@
 	const char *error_page = NULL;
 #endif
 	unsigned i;
-	time_t timer = time(0);
+	time_t timer = time(NULL);
 	char tmp_str[80];
 	int len;
 

Modified: trunk/busybox/networking/udhcp/dhcpd.c
===================================================================
--- trunk/busybox/networking/udhcp/dhcpd.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/networking/udhcp/dhcpd.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -255,13 +255,13 @@
 			DEBUG("Received DECLINE");
 			if (lease) {
 				memset(lease->chaddr, 0, 16);
-				lease->expires = time(0) + server_config.decline_time;
+				lease->expires = time(NULL) + server_config.decline_time;
 			}
 			break;
 		case DHCPRELEASE:
 			DEBUG("Received RELEASE");
 			if (lease)
-				lease->expires = time(0);
+				lease->expires = time(NULL);
 			break;
 		case DHCPINFORM:
 			DEBUG("Received INFORM");

Modified: trunk/busybox/networking/udhcp/files.c
===================================================================
--- trunk/busybox/networking/udhcp/files.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/networking/udhcp/files.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -36,6 +36,7 @@
 	return 1;
 }
 
+
 static int read_mac(const char *line, void *arg)
 {
 	return NULL == ether_aton_r(line, (struct ether_addr *)arg);
@@ -362,7 +363,7 @@
 		if (leases[i].yiaddr == 0)
 			continue;
 
-		/* screw with the time in the struct, for easier writing */
+		/* Screw with the time in the struct, for easier writing */
 		tmp_time = leases[i].expires;
 
 		leases[i].expires -= curr;
@@ -374,7 +375,7 @@
 		 * we lose some leases on restart. Oh well. */
 		full_write(fd, &leases[i], sizeof(leases[i]));
 
-		/* then restore it when done */
+		/* Then restore it when done */
 		leases[i].expires = tmp_time;
 	}
 	close(fd);
@@ -390,10 +391,10 @@
 
 void FAST_FUNC read_leases(const char *file)
 {
+	struct dhcpOfferedAddr lease;
+	int64_t written_at, time_passed;
 	int fd;
-	unsigned i;
-	struct dhcpOfferedAddr lease;
-	int64_t written_at, curr;
+	USE_UDHCP_DEBUG(unsigned i;)
 
 	fd = open_or_warn(file, O_RDONLY);
 	if (fd < 0)
@@ -402,18 +403,19 @@
 	if (full_read(fd, &written_at, sizeof(written_at)) != sizeof(written_at))
 		goto ret;
 	written_at = ntoh64(written_at);
-	curr = time(NULL);
-	if (curr < written_at)
-		written_at = curr; /* lease file from future! :) */
 
-	i = 0;
-	while (i < server_config.max_leases
-	 && full_read(fd, &lease, sizeof(lease)) == sizeof(lease)
-	) {
+	time_passed = time(NULL) - written_at;
+	/* Strange written_at, or lease file from old version of udhcpd
+	 * which had no "written_at" field? */
+	if ((uint64_t)time_passed > 12 * 60 * 60)
+		goto ret;
+
+	USE_UDHCP_DEBUG(i = 0;)
+	while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) {
 		/* ADDME: what if it matches some static lease? */
 		uint32_t y = ntohl(lease.yiaddr);
 		if (y >= server_config.start_ip && y <= server_config.end_ip) {
-			int64_t expires = ntohl(lease.expires) + written_at - curr;
+			signed_leasetime_t expires = ntohl(lease.expires) - (signed_leasetime_t)time_passed;
 			if (expires <= 0)
 				continue;
 			/* NB: add_lease takes "relative time", IOW,
@@ -422,7 +424,7 @@
 				bb_error_msg("too many leases while loading %s", file);
 				break;
 			}
-			i++;
+			USE_UDHCP_DEBUG(i++;)
 		}
 	}
 	DEBUG("Read %d leases", i);

Modified: trunk/busybox/runit/sv.c
===================================================================
--- trunk/busybox/runit/sv.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/runit/sv.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -445,7 +445,7 @@
 	service = argv;
 	services = argc - 1;
 
-	tnow = time(0) + 0x400000000000000aULL;
+	tnow = time(NULL) + 0x400000000000000aULL;
 	tstart = tnow;
 	curdir = open_read(".");
 	if (curdir == -1)
@@ -592,7 +592,7 @@
 		}
 		if (want_exit) break;
 		usleep(420000);
-		tnow = time(0) + 0x400000000000000aULL;
+		tnow = time(NULL) + 0x400000000000000aULL;
 	}
 	return rc > 99 ? 99 : rc;
 }

Modified: trunk/busybox/util-linux/rtcwake.c
===================================================================
--- trunk/busybox/util-linux/rtcwake.c	2009-02-02 07:24:48 UTC (rev 25218)
+++ trunk/busybox/util-linux/rtcwake.c	2009-02-02 10:48:06 UTC (rev 25219)
@@ -159,7 +159,7 @@
 		bb_error_msg_and_die("%s not enabled for wakeup events", rtcname);
 
 	/* relative or absolute alarm time, normalized to time_t */
-	sys_time = time(0);
+	sys_time = time(NULL);
 	if (sys_time == (time_t)-1)
 		bb_perror_msg_and_die("read system time");
 	rtc_time = rtc_read_time(fd, utc);



More information about the busybox-cvs mailing list