Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gcc 9 -Warray-bounds warnings about memset() in generated code #7140

Closed
dkl opened this issue Jan 27, 2020 · 9 comments
Closed

gcc 9 -Warray-bounds warnings about memset() in generated code #7140

dkl opened this issue Jan 27, 2020 · 9 comments

Comments

@dkl
Copy link

dkl commented Jan 27, 2020

What version of protobuf and what language are you using?
Version: master
Language: C++

What operating system (Linux, Windows, ...) and version?
Ubuntu 19.10 on x86_64

What runtime / compiler are you using (e.g., python version or gcc version)
g++ (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008

What did you do?
Used a proto file such as the following:

syntax = "proto2";

message Message1 {
    required int32 a = 1;
    required int32 b = 2;
}

and compiled it with protoc foo.proto --cpp_out=. && g++ -O3 -Wall foo.pb.cc -c

What did you expect to see
compiles without warnings

What did you see instead?

In file included from /usr/include/string.h:494,
                 from /usr/include/c++/9/cstring:42,
                 from /usr/local/include/google/protobuf/io/coded_stream.h:118,
                 from foo.pb.h:23,
                 from foo.pb.cc:4:
In function ‘void* memset(void*, int, size_t)’,
    inlined from ‘void Message1::SharedCtor()’ at foo.pb.cc:111:11,
    inlined from ‘Message1::Message1()’ at foo.pb.cc:96:13,
    inlined from ‘void InitDefaultsscc_info_Message1_foo_2eproto()’ at foo.pb.cc:94:1:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:33: warning: ‘void* __builtin_memset(void*, int, long unsigned int)’ offset [29, 32] from the object at ‘_Message1_default_instance_’ is out of the bounds of referenced subobject ‘Message1::a_’ with type ‘int’ at offset 24 [-Warray-bounds]
   71 |   return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

It warns about memset() being called on a field, but writing not just to that field, but also to following fields. See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90376

The warning doesn't appear when using -O2 instead of -O3, but -O3 is common in CMake release builds (which is how it showed up here).

Anything else we should know about your project / environment

@clementperon
Copy link

Hi,

I got the same issue, protobuf 3.11.4 and gcc 9.2.1.
Did you find a fix for that ?

Thanks,
Clement

@dkl
Copy link
Author

dkl commented Mar 16, 2020

As work-around we're using -Wno-array-bounds when compiling the generated sources now (CMake):

set_source_files_properties(${PROTO_SRCS} PROPERTIES COMPILE_FLAGS -Wno-array-bounds)

@ahmedtd
Copy link

ahmedtd commented Apr 5, 2020

This appears to be the offending memset:

"::memset(&$first$_, 0, static_cast<size_t>(\n"

@clementperon
Copy link

clementperon commented Apr 5, 2020

@ahmedtd Yes it is. For me this warning is legit as the memset is writing out of the struct size passed as src*.
I try to fix it by casting explicitly the src to a void* or char* to avoid GCC checking for an outbound memory write. But didn't success IDK ¯_(ツ)_/¯.
Maybe It wasn't a static cast, just a C cast so if you want to retest this it would be really nice, thank you !

@ahmedtd
Copy link

ahmedtd commented Apr 6, 2020

I think doing the memset (and memcpy above) in terms of the individual field names is undefined behavior.

This is how they fixed the problem in the Linux kernel: do the memsets in term of offsets within the parent object. That requires offsetof, which isn't currently available in the generated pb.cc file (needs <cstddef>).

I'm not sure if it's OK to add that dependency.

@Richardyuyu
Copy link

My security tool finds security vulnerable for *.pb.cc files using memcpy/ memset, and it has security concern that the buffer copy does not check size and will lead to buffer overflow.
Using memcpy/ memset is unsecure, is there any plan to remove the uses towards something more secure?

@dflogeras
Copy link

Also affected on multiple arm environments: armv7a-unknown-linux-gnuebihf- and armv6j-unknown-linux-ucliceabihf- (both Gentoo) compiling at -O3 (-O2 doesn't issue the warning for me). Both gcc-9.3.0.

@DinoStray
Copy link

The same warning for gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0

@acozzette
Copy link
Member

Should be fixed by #7913.

lmoneta added a commit to root-project/root that referenced this issue Sep 1, 2021
* fix protobuf warnings as suggested in protocolbuffers/protobuf#7140 (comment)

* Silent protobuf warning for used parameter
Silet also previous warning for array bound when building test program

* silent warning also when building test traget EmitFromROOT

* add comment on turning-off  the warnings from protibuf
senhalil added a commit to senhalil/optimizer-ortools that referenced this issue Feb 3, 2022
Remaining 4 warnings are because of protobuf auto-generated files due
to a protobuf bug which is fixed at v3.14 and the warnings will be
disappear once the or-tools version is increased to v9+ which upgrades
the protobuf dependency.

protocolbuffers/protobuf#7140 (comment)
senhalil added a commit to senhalil/optimizer-ortools that referenced this issue Feb 3, 2022
Remaining 4 warnings are because of protobuf auto-generated files due
to a protobuf bug which is fixed at v3.14 and the warnings will be
disappear once the or-tools version is increased to v9+ which upgrades
the protobuf dependency.

protocolbuffers/protobuf#7140 (comment)
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Aug 3, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Aug 3, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Aug 5, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Aug 9, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Aug 14, 2023
cmcantalupo added a commit to geopm/geopm that referenced this issue Sep 7, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Sep 25, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Sep 25, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Sep 26, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Sep 27, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Oct 11, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Oct 12, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Oct 13, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Oct 20, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Oct 27, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Nov 3, 2023
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jan 9, 2024
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Feb 21, 2024
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 18, 2024
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 18, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 18, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 19, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 19, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 19, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 19, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 19, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 19, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 19, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
cmcantalupo added a commit to cmcantalupo/geopm that referenced this issue Jul 20, 2024
- First pass at creating a prototype buffer definition
  for DBus methods used by ServiceIOGroup
- First draft of GEOPM grpc service
- Generate protobuffer files with autogen.sh
- Add some configure scripts for grpc.
- Add grpc requirements to spec file
- Add protoc-gen.sh to tarball
- Fixes geopm#2775
- Use LOCAL_TCP not UDS because python support server context in UDS is
  limited
- Abstract use of GLib and posix pid interfaces. This will enable network
  peer ID to be used in place of PID for tracking clients
- Derive the client_id from the gRPC server context: use number
  in peer name following last colon
- TODO: Write unit tests
- TODO: Run integration tests for controls
- TODO: Add documentation
- TODO: Implement session closure when client connection ends
- Get working in containers
- Add k8 manifest and Dockerfile
- TODO: Dockerfile currently points to my debug builds
- Switch back to user provided credentials
  + Although we are able to get the peer name from the context
    it is not really possible to go from network peer to linux PID
  + We will have to switch back to a UDS approach and implement
    OpenSession and CloseSession RPCs in either C++ or golang
    where getting the UDS credentials from the server context is
    possible (cannot see a way in python)
- Switch back to UDS socket
- Add a seccomp for all discovered syscalls
- Disable PID tracking when running inside of a container
  + This is a stopgap solution.
  + Need to get credentials from UDS
  + More pressingly, we need to be able to convert between PID namespaces.
- Move seccomp files into container image
- Clean up client test
- Remove seccomp sections of manifest
- Add some documentation about the k8 files
- Remove unnessesary build requires from spec file
- Add rust proxy server to tranfer UDS credentials
- Forward requests to python based geopmd server
- Transfer UDS credentials through the SessionKey message
- Switch geopmdpy to use private port for gprc comms
- Remove use of google Empty protobuf
  + Cannot seem to properly import it into rust
- update .gitignore
- Add a mutex to protect the client object
- Add build scripts for rust
- Fix issue with stop batch (missing session key)
- Add a vendor archive to support rust build in obs
- Fixup protobuf deps
- Remove extra crate files from install
- Switch socket paths to end in ".sock" to make tonic happy
- Update proxy server to use correct pattern for UDS sockets based on tonic examplue
- Fix permissions on public socket
- Remove modification to geopm.seervice spec file:
  do not use grpc flag
- Got basic read test working with credential forwarding
- Update docker file to use Tumbleweed distro (required for latest Rust)
- Remove the seccomp files
- Do not seem to be required on the k8 system under test.
- May be missing system calls, only ran strace on one test.
- Add util-linux to Requires section of spec file
- Create the user and groups on the server node and share the PID namespace
- Get rid of known issue documentation (no longer a known issue)
- Restrict umask when creating secure UDS
- Add missing "not" in comment
- Add Header to CSV
- Add more documentation about the Kubernetes demo
- Clean up k8 documentation in README
- Add more information and links to experimental branch description
- Add control loop feature to cloud readme
- Add link to upstream issue in gRPC
- Update README now that work around for grpcio v1.30.2 is in place
- Merge k8 directory service readme and service Dockerfile from cloud branch
- Fixup control and rules files for grpc
- Sync grpc interface with app profiling api
- Add new build requirements to github workflow
- Add gRPC plumbing for PlatformRestoreControl
- Do not build cargo index in home
  + Build the index in $(abs_builddir) instead.
- Revert client_registry changes
- Disable array bounds checking due to issue with protoc generated code
  + protocolbuffers/protobuf#7140
- Switch geopm systemd service to using grpc in unit file
- Periodically close inactive sessions in the grpc server
- Change batch server from fork to subprocess
- Remove BatchServerTest entirely
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants