mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	filesystem_freebsd: Fix label values
We must know the length of the various filesystem C strings before turning them from a byte array into a Go string, otherwise our Go strings could contain null bytes, corrupting the label values. Signed-off-by: David O'Rourke <david.orourke@gmail.com>
This commit is contained in:
		
							parent
							
								
									2c433cdac3
								
							
						
					
					
						commit
						4c06e33c23
					
				|  | @ -16,6 +16,8 @@ | |||
| package collector | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 
 | ||||
| 	"github.com/go-kit/kit/log/level" | ||||
| 	"golang.org/x/sys/unix" | ||||
| ) | ||||
|  | @ -40,14 +42,19 @@ func (c *filesystemCollector) GetStats() ([]filesystemStats, error) { | |||
| 	} | ||||
| 	stats := []filesystemStats{} | ||||
| 	for _, fs := range buf { | ||||
| 		mountpoint := string(fs.Mntonname[:]) | ||||
| 		// We need to work out the lengths of the actual strings here,
 | ||||
| 		// otherwuse we will end up with null bytes in our label values.
 | ||||
| 		mountpoint_len := bytes.Index(fs.Mntonname[:], []byte{0}) | ||||
| 		mountpoint := string(fs.Mntonname[:mountpoint_len]) | ||||
| 		if c.ignoredMountPointsPattern.MatchString(mountpoint) { | ||||
| 			level.Debug(c.logger).Log("msg", "Ignoring mount point", "mountpoint", mountpoint) | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		device := string(fs.Mntfromname[:]) | ||||
| 		fstype := string(fs.Fstypename[:]) | ||||
| 		device_len := bytes.Index(fs.Mntfromname[:], []byte{0}) | ||||
| 		fstype_len := bytes.Index(fs.Fstypename[:], []byte{0}) | ||||
| 		device := string(fs.Mntfromname[:device_len]) | ||||
| 		fstype := string(fs.Fstypename[:fstype_len]) | ||||
| 		if c.ignoredFSTypesPattern.MatchString(fstype) { | ||||
| 			level.Debug(c.logger).Log("msg", "Ignoring fs type", "type", fstype) | ||||
| 			continue | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue