[Debootloaders-yaboot] Bug#615602: additional debug info + patch proposal

bernward.pub at arcor.de bernward.pub at arcor.de
Wed Mar 16 23:03:53 UTC 2011


A) I localised the bug in /usr/sbin/ybin lines 1592 to 1597:

	## also accept symlink names in quotes or with escaped characters
	boot="`readlink -f \"$(eval echo ${boot})\"`"
	bsd="`readlink -f \"$(eval echo ${bsd})\"`"
	macos="`readlink -f \"$(eval echo ${macos})\"`"
	macosx="`readlink -f \"$(eval echo ${macosx})\"`"
	darwin="`readlink -f \"$(eval echo ${darwin})\"`"

=> This block seems to be a Debian diff, it is not in the original source! 
	
I tested it for the variable ${macos}, line 1595 from ybin:
	macos="`readlink -f \"$(eval echo ${macos})\"`"

At this point, ${macos} may contain an Open Firmware path (like "hd:7") as well as an Unix device path ("/dev/*").
I used 4 test cases for ${macos} :

1. "/dev/sdc7"								a standard Unix device name
2. "/dev/disk/by-id/scsi-SATA_SAMSUNG_SV1204H0504J1BW706040-part7"	a Unix device symbolic link
3. "/pci at 80000000/pci-bridge at d/pci-ata at 1/@0/@0:7"			an Open Firmware path name
4. "hd:7"								an Open Firmware symbolic link

For testing, I used test-ybin.sh (appended), which prints out ${macos} before(1) and after(2) line 1595 (readlink), with the following result:

	test-ybin1:/dev/sdc7
	test-ybin2:/dev/sdc7
	
	test-ybin1:/dev/disk/by-id/scsi-SATA_SAMSUNG_SV1204H0504J1BW706040-part7
	test-ybin2:/dev/sdc7
	
	test-ybin1:/pci at 80000000/pci-bridge at d/pci-ata at 1/@0/@0:7
	test-ybin2:
	
	test-ybin1:hd:7
	test-ybin2:/home/bernward/hd:7
	
The test cases 1. + 2. with Unix filenames are right, but the test cases 3. + 4. with Open Firmware pathes fail: 
=> readlink is not apropriate to handle Open Firmware pathes!


B) Solution proposal:

The block from lines 1592 to 1597 ("## also accept symlink names in quotes or with escaped characters") should only be applied, if the path names are given as Unix device names.
It should not be applied for Open Firmware path names.

There is already a case command which does this selection in convertpath():
	# from ybin line 644:
		case "$macos" in
	    		/dev/*)

If each of the lines 1592 to 1597 ("## also accept symlink names in quotes or with escaped characters") is sorted in the apropriate case in function convertpath(), things should be right.

I tested it for ${macos} in test-ybin-patch.sh (appended), which prints out ${macos} 
before the case command (1), 
after the readlink command (2), which was moved into the appropriate case construction, 
and after the case construction (3), 
with the following result:
	
	test-ybin-patch1:/dev/sdc7
	test-ybin-patch2:/dev/sdc7
	test-ybin-patch3:/pci at 80000000/pci-bridge at d/pci-ata at 1/@0/@0:7

	test-ybin-patch1:/dev/disk/by-id/scsi-SATA_SAMSUNG_SV1204H0504J1BW706040-part7
	test-ybin-patch2:/dev/sdc7
	test-ybin-patch3:/pci at 80000000/pci-bridge at d/pci-ata at 1/@0/@0:7

	test-ybin-patch1:/pci at 80000000/pci-bridge at d/pci-ata at 1/@0/@0:7
	test-ybin-patch3:/pci at 80000000/pci-bridge at d/pci-ata at 1/@0/@0:7

	test-ybin-patch1:hd:7
	test-ybin-patch3:hd:7

=> All 4 test cases are handled right!

-------------- next part --------------
A non-text attachment was scrubbed...
Name: test-ybin.sh
Type: application/x-shellscript
Size: 344 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/debootloaders-yaboot/attachments/20110317/e5ab7de9/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test-ybin-patch.sh
Type: application/x-shellscript
Size: 1050 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/debootloaders-yaboot/attachments/20110317/e5ab7de9/attachment-0001.bin>


More information about the Debootloaders-yaboot mailing list