On 9 Mar 2023, at 13:06, Arne Schwabe wrote:
> Am 09.03.23 um 10:26 schrieb Kristof Provost via Openvpn-devel:
>> From: Kristof Provost <k...@freebsd.org>
>>
>> Implement dco_version_string() for FreeBSD.
>> Unlike Linux and Windows the DCO driver is built into the operating
>> system itself, so we log the OS version as a proxy for the DCO version.
>> ---
>>   src/openvpn/dco_freebsd.c | 14 +++++++++++++-
>>   1 file changed, 13 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/openvpn/dco_freebsd.c b/src/openvpn/dco_freebsd.c
>> index 2b94b2a2..a5e96bb2 100644
>> --- a/src/openvpn/dco_freebsd.c
>> +++ b/src/openvpn/dco_freebsd.c
>> @@ -31,6 +31,8 @@
>>   #include <sys/param.h>
>>   #include <sys/linker.h>
>>   #include <sys/nv.h>
>> +#include <sys/utsname.h>
>> +
>>   #include <netinet/in.h>
>>    #include "dco_freebsd.h"
>> @@ -627,7 +629,17 @@ out:
>>   const char *
>>   dco_version_string(struct gc_arena *gc)
>>   {
>> -    return "v0";
>> +    struct utsname name;
>> +    struct buffer out = alloc_buf_gc(256, gc);
>> +    int ret;
>> +
>> +    ret = uname(&name);
>> +    if (ret != 0)
>> +        return "N/A";
>
> There should be { around the return

I’ll fix that.

>> +
>> +    buf_printf(&out, "%s", name.version);
>> +
>> +    return (char *)out.data;
>
> This should use BSTR(data) instead.
>
I copied Antonio’s code here, but that is better, so I’ll fix that too.

> Instead of copying/printf, you could also just do:
>
>     struct utsname* uts;
>     ALLOC_OBJ_GC(uts, struct utsname, gc);
>
>
>     if (uname(&name) != 0)
>     {
>         return "N/A";
>     }
>
>     return uts->name;
>
I was going to object that we can’t return stack variables, but that’s an 
allocation of utsname, and it removes an intermediate step, so yeah, that’s 
better too (and means I can just copy your code, call it my own and pretend I 
did work ;))

Thanks.
Kristof


_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to