From 69e39dc188617a2b613d0ec72be13499d8b11e27 Mon Sep 17 00:00:00 2001 From: alhimik45 Date: Sat, 29 Aug 2020 16:29:06 +0300 Subject: [PATCH] fix examples to work with NULL buffer on getting extended attributes --- example/HelloFS/HelloFS.cs | 11 ++++++++--- example/RedirectFS-FH/RedirectFS-FH.cs | 2 +- example/RedirectFS/RedirectFS.cs | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/example/HelloFS/HelloFS.cs b/example/HelloFS/HelloFS.cs index db68570..30e3905 100644 --- a/example/HelloFS/HelloFS.cs +++ b/example/HelloFS/HelloFS.cs @@ -166,10 +166,15 @@ namespace Mono.Fuse.NETStandard.Samples { return 0; _value = hello_attrs [name]; } - if (value.Length < _value.Length) { - return Errno.ERANGE; + + if (value != null) + { + if (value.Length < _value.Length) { + return Errno.ERANGE; + } + + Array.Copy(_value, value, _value.Length); } - Array.Copy (_value, value, _value.Length); bytesWritten = _value.Length; return 0; } diff --git a/example/RedirectFS-FH/RedirectFS-FH.cs b/example/RedirectFS-FH/RedirectFS-FH.cs index b37aa40..8a5232a 100644 --- a/example/RedirectFS-FH/RedirectFS-FH.cs +++ b/example/RedirectFS-FH/RedirectFS-FH.cs @@ -337,7 +337,7 @@ namespace Mono.Fuse.NETStandard.Samples { protected override Errno OnGetPathExtendedAttribute (string path, string name, byte[] value, out int bytesWritten) { - int r = bytesWritten = (int) Syscall.lgetxattr (basedir+path, name, value, (ulong) value.Length); + int r = bytesWritten = (int) Syscall.lgetxattr (basedir+path, name, value, (ulong) (value?.Length ?? 0)); if (r == -1) return Stdlib.GetLastError (); return 0; diff --git a/example/RedirectFS/RedirectFS.cs b/example/RedirectFS/RedirectFS.cs index 76e7f8a..148027f 100644 --- a/example/RedirectFS/RedirectFS.cs +++ b/example/RedirectFS/RedirectFS.cs @@ -284,7 +284,7 @@ namespace Mono.Fuse.NETStandard.Samples { protected override Errno OnGetPathExtendedAttribute (string path, string name, byte[] value, out int bytesWritten) { - int r = bytesWritten = (int) Syscall.lgetxattr (basedir+path, name, value, (ulong) value.Length); + int r = bytesWritten = (int) Syscall.lgetxattr (basedir+path, name, value, (ulong) (value?.Length ?? 0)); if (r == -1) return Stdlib.GetLastError (); return 0;