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

iOS need Privacy Manifests #15029

Closed
LionWY opened this issue Dec 11, 2023 · 6 comments
Closed

iOS need Privacy Manifests #15029

LionWY opened this issue Dec 11, 2023 · 6 comments

Comments

@LionWY
Copy link

LionWY commented Dec 11, 2023

Apple need privacy Manifests

https://developer.apple.com/cn/support/third-party-SDK-requirements/

image

@LionWY LionWY added the untriaged auto added to all issues by default when created. label Dec 11, 2023
@zhangskz zhangskz self-assigned this Dec 19, 2023
@zhangskz zhangskz added packaging & distribution and removed untriaged auto added to all issues by default when created. labels Dec 19, 2023
@GH-Ong
Copy link

GH-Ong commented Jan 10, 2024

hi @zhangskz any updates on this requirement as well as code signing?

dmaclach added a commit that referenced this issue Jan 23, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue #15029
@dmaclach dmaclach assigned dmaclach and zhangskz and unassigned zhangskz Jan 23, 2024
dmaclach added a commit to dmaclach/protobuf that referenced this issue Jan 23, 2024
issue#protocolbuffers#15029

As required by https://developer.apple.com/support/third-party-SDK-requirements/

Protos does not collect data.

Required reason APIs searched for using:
```
grep -ER 'NSFileCreationDate|NSFileModificationDate|fileModificationDate|NSURLContentModificationDateKey|NSURLCreationDateKey|getattrlist\(|getattrlistbulk\(|fgetattrlist\(|stat\(|fstat\(|fstatat\(|lstat\(|getattrlistat\(|systemUptime\(|mach_absolute_time\(|NSURLVolumeAvailableCapacityKey|NSURLVolumeAvailableCapacityForImportantUsageKey|NSURLVolumeAvailableCapacityForOpportunisticUsageKey|NSURLVolumeTotalCapacityKey|NSFileSystemFreeSize|NSFileSystemSize|statfs\(|statvfs\(|fstatfs\(|fstatvfs\(|getattrlist\(|fgetattrlist\(|getattrlistat\(|activeInputModes|NSUserDefaults' .
```

```
./third_party/utf8_range/utf8_to_utf16/main.c:    if (fstat(fd, &stat) == -1) {
./third_party/utf8_range/main.c:    if (fstat(fd, &stat) == -1) {
./src/google/protobuf/map.h:    s = mach_absolute_time();
./src/google/protobuf/io/io_win32.cc:int stat(const char* path, struct _stat* buffer) {
./src/google/protobuf/io/io_win32.cc:  return ::_wstat(wpath.c_str(), buffer);
./src/google/protobuf/io/io_win32.cc:  return ::_stat(path, buffer);
./src/google/protobuf/io/io_win32.h:PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
./src/google/protobuf/testing/file.cc:  if (lstat(name.c_str(), &stats) != 0) return;
./src/google/protobuf/compiler/importer.cc:    ret = stat(std::string(filename).c_str(), &sb);
```

`./third_party/utf8_range/...` - tool for utf that is not in user binaries
`./src/google/protobuf/map.h` - resolved with pull#15554
`./src/google/protobuf/io/io_win32.cc` - windows code
`./src/google/protobuf/testing/file.cc` - testing code not in user binaries
`./src/google/protobuf/compiler/importer.cc` - compiler code not in user binaries

So no required reason APIs.

Apple has not yet communicated how this is to be put into podspecs so saving for future commit.
copybara-service bot pushed a commit that referenced this issue Jan 25, 2024
issue##15029

As required by https://developer.apple.com/support/third-party-SDK-requirements/

Protos does not collect data.

Required reason APIs searched for using:
```
grep -ER 'NSFileCreationDate|NSFileModificationDate|fileModificationDate|NSURLContentModificationDateKey|NSURLCreationDateKey|getattrlist\(|getattrlistbulk\(|fgetattrlist\(|stat\(|fstat\(|fstatat\(|lstat\(|getattrlistat\(|systemUptime\(|mach_absolute_time\(|NSURLVolumeAvailableCapacityKey|NSURLVolumeAvailableCapacityForImportantUsageKey|NSURLVolumeAvailableCapacityForOpportunisticUsageKey|NSURLVolumeTotalCapacityKey|NSFileSystemFreeSize|NSFileSystemSize|statfs\(|statvfs\(|fstatfs\(|fstatvfs\(|getattrlist\(|fgetattrlist\(|getattrlistat\(|activeInputModes|NSUserDefaults' .
```

```
./third_party/utf8_range/utf8_to_utf16/main.c:    if (fstat(fd, &stat) == -1) {
./third_party/utf8_range/main.c:    if (fstat(fd, &stat) == -1) {
./src/google/protobuf/map.h:    s = mach_absolute_time();
./src/google/protobuf/io/io_win32.cc:int stat(const char* path, struct _stat* buffer) {
./src/google/protobuf/io/io_win32.cc:  return ::_wstat(wpath.c_str(), buffer);
./src/google/protobuf/io/io_win32.cc:  return ::_stat(path, buffer);
./src/google/protobuf/io/io_win32.h:PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
./src/google/protobuf/testing/file.cc:  if (lstat(name.c_str(), &stats) != 0) return;
./src/google/protobuf/compiler/importer.cc:    ret = stat(std::string(filename).c_str(), &sb);
```

`./third_party/utf8_range/...` - tool for utf that is not in user binaries
`./src/google/protobuf/map.h` - resolved with pull#15554
`./src/google/protobuf/io/io_win32.cc` - windows code
`./src/google/protobuf/testing/file.cc` - testing code not in user binaries
`./src/google/protobuf/compiler/importer.cc` - compiler code not in user binaries

So no required reason APIs.

Apple has not yet communicated how this is to be put into podspecs so saving for future commit.

Closes #15557

COPYBARA_INTEGRATE_REVIEW=#15557 from dmaclach:privacy 4c4e570
PiperOrigin-RevId: 601362376
copybara-service bot pushed a commit that referenced this issue Jan 25, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue #15029

Closes #15554

COPYBARA_INTEGRATE_REVIEW=#15554 from protocolbuffers:dmaclach-mach_absolute_time 295d831
PiperOrigin-RevId: 601370915
zhangskz pushed a commit to zhangskz/protobuf that referenced this issue Jan 31, 2024
issue#protocolbuffers#15029

As required by https://developer.apple.com/support/third-party-SDK-requirements/

Protos does not collect data.

Required reason APIs searched for using:
```
grep -ER 'NSFileCreationDate|NSFileModificationDate|fileModificationDate|NSURLContentModificationDateKey|NSURLCreationDateKey|getattrlist\(|getattrlistbulk\(|fgetattrlist\(|stat\(|fstat\(|fstatat\(|lstat\(|getattrlistat\(|systemUptime\(|mach_absolute_time\(|NSURLVolumeAvailableCapacityKey|NSURLVolumeAvailableCapacityForImportantUsageKey|NSURLVolumeAvailableCapacityForOpportunisticUsageKey|NSURLVolumeTotalCapacityKey|NSFileSystemFreeSize|NSFileSystemSize|statfs\(|statvfs\(|fstatfs\(|fstatvfs\(|getattrlist\(|fgetattrlist\(|getattrlistat\(|activeInputModes|NSUserDefaults' .
```

```
./third_party/utf8_range/utf8_to_utf16/main.c:    if (fstat(fd, &stat) == -1) {
./third_party/utf8_range/main.c:    if (fstat(fd, &stat) == -1) {
./src/google/protobuf/map.h:    s = mach_absolute_time();
./src/google/protobuf/io/io_win32.cc:int stat(const char* path, struct _stat* buffer) {
./src/google/protobuf/io/io_win32.cc:  return ::_wstat(wpath.c_str(), buffer);
./src/google/protobuf/io/io_win32.cc:  return ::_stat(path, buffer);
./src/google/protobuf/io/io_win32.h:PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
./src/google/protobuf/testing/file.cc:  if (lstat(name.c_str(), &stats) != 0) return;
./src/google/protobuf/compiler/importer.cc:    ret = stat(std::string(filename).c_str(), &sb);
```

`./third_party/utf8_range/...` - tool for utf that is not in user binaries
`./src/google/protobuf/map.h` - resolved with pull#15554
`./src/google/protobuf/io/io_win32.cc` - windows code
`./src/google/protobuf/testing/file.cc` - testing code not in user binaries
`./src/google/protobuf/compiler/importer.cc` - compiler code not in user binaries

So no required reason APIs.

Apple has not yet communicated how this is to be put into podspecs so saving for future commit.

Closes protocolbuffers#15557

COPYBARA_INTEGRATE_REVIEW=protocolbuffers#15557 from dmaclach:privacy 4c4e570
PiperOrigin-RevId: 601362376
zhangskz pushed a commit to zhangskz/protobuf that referenced this issue Jan 31, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue protocolbuffers#15029

Closes protocolbuffers#15554

COPYBARA_INTEGRATE_REVIEW=protocolbuffers#15554 from protocolbuffers:dmaclach-mach_absolute_time 295d831
PiperOrigin-RevId: 601370915
zhangskz pushed a commit to zhangskz/protobuf that referenced this issue Jan 31, 2024
issue#protocolbuffers#15029

As required by https://developer.apple.com/support/third-party-SDK-requirements/

Protos does not collect data.

Required reason APIs searched for using:
```
grep -ER 'NSFileCreationDate|NSFileModificationDate|fileModificationDate|NSURLContentModificationDateKey|NSURLCreationDateKey|getattrlist\(|getattrlistbulk\(|fgetattrlist\(|stat\(|fstat\(|fstatat\(|lstat\(|getattrlistat\(|systemUptime\(|mach_absolute_time\(|NSURLVolumeAvailableCapacityKey|NSURLVolumeAvailableCapacityForImportantUsageKey|NSURLVolumeAvailableCapacityForOpportunisticUsageKey|NSURLVolumeTotalCapacityKey|NSFileSystemFreeSize|NSFileSystemSize|statfs\(|statvfs\(|fstatfs\(|fstatvfs\(|getattrlist\(|fgetattrlist\(|getattrlistat\(|activeInputModes|NSUserDefaults' .
```

```
./third_party/utf8_range/utf8_to_utf16/main.c:    if (fstat(fd, &stat) == -1) {
./third_party/utf8_range/main.c:    if (fstat(fd, &stat) == -1) {
./src/google/protobuf/map.h:    s = mach_absolute_time();
./src/google/protobuf/io/io_win32.cc:int stat(const char* path, struct _stat* buffer) {
./src/google/protobuf/io/io_win32.cc:  return ::_wstat(wpath.c_str(), buffer);
./src/google/protobuf/io/io_win32.cc:  return ::_stat(path, buffer);
./src/google/protobuf/io/io_win32.h:PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
./src/google/protobuf/testing/file.cc:  if (lstat(name.c_str(), &stats) != 0) return;
./src/google/protobuf/compiler/importer.cc:    ret = stat(std::string(filename).c_str(), &sb);
```

`./third_party/utf8_range/...` - tool for utf that is not in user binaries
`./src/google/protobuf/map.h` - resolved with pull#15554
`./src/google/protobuf/io/io_win32.cc` - windows code
`./src/google/protobuf/testing/file.cc` - testing code not in user binaries
`./src/google/protobuf/compiler/importer.cc` - compiler code not in user binaries

So no required reason APIs.

Apple has not yet communicated how this is to be put into podspecs so saving for future commit.

Closes protocolbuffers#15557

COPYBARA_INTEGRATE_REVIEW=protocolbuffers#15557 from dmaclach:privacy 4c4e570
PiperOrigin-RevId: 601362376
zhangskz pushed a commit to zhangskz/protobuf that referenced this issue Jan 31, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue protocolbuffers#15029

Closes protocolbuffers#15554

COPYBARA_INTEGRATE_REVIEW=protocolbuffers#15554 from protocolbuffers:dmaclach-mach_absolute_time 295d831
PiperOrigin-RevId: 601370915
zhangskz added a commit that referenced this issue Jan 31, 2024
issue##15029

As required by https://developer.apple.com/support/third-party-SDK-requirements/

Protos does not collect data.

Required reason APIs searched for using:
```
grep -ER 'NSFileCreationDate|NSFileModificationDate|fileModificationDate|NSURLContentModificationDateKey|NSURLCreationDateKey|getattrlist\(|getattrlistbulk\(|fgetattrlist\(|stat\(|fstat\(|fstatat\(|lstat\(|getattrlistat\(|systemUptime\(|mach_absolute_time\(|NSURLVolumeAvailableCapacityKey|NSURLVolumeAvailableCapacityForImportantUsageKey|NSURLVolumeAvailableCapacityForOpportunisticUsageKey|NSURLVolumeTotalCapacityKey|NSFileSystemFreeSize|NSFileSystemSize|statfs\(|statvfs\(|fstatfs\(|fstatvfs\(|getattrlist\(|fgetattrlist\(|getattrlistat\(|activeInputModes|NSUserDefaults' .
```

```
./third_party/utf8_range/utf8_to_utf16/main.c:    if (fstat(fd, &stat) == -1) {
./third_party/utf8_range/main.c:    if (fstat(fd, &stat) == -1) {
./src/google/protobuf/map.h:    s = mach_absolute_time();
./src/google/protobuf/io/io_win32.cc:int stat(const char* path, struct _stat* buffer) {
./src/google/protobuf/io/io_win32.cc:  return ::_wstat(wpath.c_str(), buffer);
./src/google/protobuf/io/io_win32.cc:  return ::_stat(path, buffer);
./src/google/protobuf/io/io_win32.h:PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
./src/google/protobuf/testing/file.cc:  if (lstat(name.c_str(), &stats) != 0) return;
./src/google/protobuf/compiler/importer.cc:    ret = stat(std::string(filename).c_str(), &sb);
```

`./third_party/utf8_range/...` - tool for utf that is not in user binaries
`./src/google/protobuf/map.h` - resolved with pull#15554
`./src/google/protobuf/io/io_win32.cc` - windows code
`./src/google/protobuf/testing/file.cc` - testing code not in user binaries
`./src/google/protobuf/compiler/importer.cc` - compiler code not in user binaries

So no required reason APIs.

Apple has not yet communicated how this is to be put into podspecs so saving for future commit.

Closes #15557

COPYBARA_INTEGRATE_REVIEW=#15557 from dmaclach:privacy 4c4e570
PiperOrigin-RevId: 601362376

Co-authored-by: dmaclach <[email protected]>
zhangskz added a commit that referenced this issue Jan 31, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue #15029

Closes #15554

COPYBARA_INTEGRATE_REVIEW=#15554 from protocolbuffers:dmaclach-mach_absolute_time 295d831
PiperOrigin-RevId: 601370915

Co-authored-by: dmaclach <[email protected]>
@zhangskz
Copy link
Member

zhangskz commented Feb 5, 2024

This was cherry-picked to the 26.x branch and should be included in the v26.0-rc2 (and later v26.0) release.

zhangskz pushed a commit that referenced this issue Feb 12, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue #15029

Closes #15554

COPYBARA_INTEGRATE_REVIEW=#15554 from protocolbuffers:dmaclach-mach_absolute_time 295d831
PiperOrigin-RevId: 601370915
zhangskz pushed a commit that referenced this issue Feb 12, 2024
issue##15029

As required by https://developer.apple.com/support/third-party-SDK-requirements/

Protos does not collect data.

Required reason APIs searched for using:
```
grep -ER 'NSFileCreationDate|NSFileModificationDate|fileModificationDate|NSURLContentModificationDateKey|NSURLCreationDateKey|getattrlist\(|getattrlistbulk\(|fgetattrlist\(|stat\(|fstat\(|fstatat\(|lstat\(|getattrlistat\(|systemUptime\(|mach_absolute_time\(|NSURLVolumeAvailableCapacityKey|NSURLVolumeAvailableCapacityForImportantUsageKey|NSURLVolumeAvailableCapacityForOpportunisticUsageKey|NSURLVolumeTotalCapacityKey|NSFileSystemFreeSize|NSFileSystemSize|statfs\(|statvfs\(|fstatfs\(|fstatvfs\(|getattrlist\(|fgetattrlist\(|getattrlistat\(|activeInputModes|NSUserDefaults' .
```

```
./third_party/utf8_range/utf8_to_utf16/main.c:    if (fstat(fd, &stat) == -1) {
./third_party/utf8_range/main.c:    if (fstat(fd, &stat) == -1) {
./src/google/protobuf/map.h:    s = mach_absolute_time();
./src/google/protobuf/io/io_win32.cc:int stat(const char* path, struct _stat* buffer) {
./src/google/protobuf/io/io_win32.cc:  return ::_wstat(wpath.c_str(), buffer);
./src/google/protobuf/io/io_win32.cc:  return ::_stat(path, buffer);
./src/google/protobuf/io/io_win32.h:PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
./src/google/protobuf/testing/file.cc:  if (lstat(name.c_str(), &stats) != 0) return;
./src/google/protobuf/compiler/importer.cc:    ret = stat(std::string(filename).c_str(), &sb);
```

`./third_party/utf8_range/...` - tool for utf that is not in user binaries
`./src/google/protobuf/map.h` - resolved with pull#15554
`./src/google/protobuf/io/io_win32.cc` - windows code
`./src/google/protobuf/testing/file.cc` - testing code not in user binaries
`./src/google/protobuf/compiler/importer.cc` - compiler code not in user binaries

So no required reason APIs.

Apple has not yet communicated how this is to be put into podspecs so saving for future commit.

Closes #15557

COPYBARA_INTEGRATE_REVIEW=#15557 from dmaclach:privacy 4c4e570
PiperOrigin-RevId: 601362376
@WWSellers
Copy link

Apple updated the schedule for manifest requirements
https://developer.apple.com/news/?id=3d8a9yyh
March 13: warnings
May 1: possible rejections

@zhangskz
Copy link
Member

We believe this should be addressed per the apple privacy manifests added as of v26.0-rc2. Please reopen if this is unsufficient!

@naahmedea
Copy link

naahmedea commented Apr 1, 2024

Let's say we are using an old version of protobuf(3.19.4) that uses mach_absolute_time(). Based on the provided code, the mach_absolute_time() function is being used to generate a seed to ensure randomness, not to measure the amount of time that has elapsed between events or to perform calculations to enable timers. Therefore, it does not appear necessary to declare any of these reasons 35F9.1, 8FFB.1, 3D61.1.

Could some one please confirm on the above statement??

@zhangskz

@zhangskz
Copy link
Member

zhangskz commented Apr 1, 2024

Discussed in #16358

zhangskz pushed a commit that referenced this issue Apr 22, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue #15029

Closes #15554

COPYBARA_INTEGRATE_REVIEW=#15554 from protocolbuffers:dmaclach-mach_absolute_time 295d831
PiperOrigin-RevId: 601370915
deannagarcia pushed a commit to deannagarcia/protobuf that referenced this issue Jun 20, 2024
issue#protocolbuffers#15029

As required by https://developer.apple.com/support/third-party-SDK-requirements/

Protos does not collect data.

Required reason APIs searched for using:
```
grep -ER 'NSFileCreationDate|NSFileModificationDate|fileModificationDate|NSURLContentModificationDateKey|NSURLCreationDateKey|getattrlist\(|getattrlistbulk\(|fgetattrlist\(|stat\(|fstat\(|fstatat\(|lstat\(|getattrlistat\(|systemUptime\(|mach_absolute_time\(|NSURLVolumeAvailableCapacityKey|NSURLVolumeAvailableCapacityForImportantUsageKey|NSURLVolumeAvailableCapacityForOpportunisticUsageKey|NSURLVolumeTotalCapacityKey|NSFileSystemFreeSize|NSFileSystemSize|statfs\(|statvfs\(|fstatfs\(|fstatvfs\(|getattrlist\(|fgetattrlist\(|getattrlistat\(|activeInputModes|NSUserDefaults' .
```

```
./third_party/utf8_range/utf8_to_utf16/main.c:    if (fstat(fd, &stat) == -1) {
./third_party/utf8_range/main.c:    if (fstat(fd, &stat) == -1) {
./src/google/protobuf/map.h:    s = mach_absolute_time();
./src/google/protobuf/io/io_win32.cc:int stat(const char* path, struct _stat* buffer) {
./src/google/protobuf/io/io_win32.cc:  return ::_wstat(wpath.c_str(), buffer);
./src/google/protobuf/io/io_win32.cc:  return ::_stat(path, buffer);
./src/google/protobuf/io/io_win32.h:PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
./src/google/protobuf/testing/file.cc:  if (lstat(name.c_str(), &stats) != 0) return;
./src/google/protobuf/compiler/importer.cc:    ret = stat(std::string(filename).c_str(), &sb);
```

`./third_party/utf8_range/...` - tool for utf that is not in user binaries
`./src/google/protobuf/map.h` - resolved with pull#15554
`./src/google/protobuf/io/io_win32.cc` - windows code
`./src/google/protobuf/testing/file.cc` - testing code not in user binaries
`./src/google/protobuf/compiler/importer.cc` - compiler code not in user binaries

So no required reason APIs.

Apple has not yet communicated how this is to be put into podspecs so saving for future commit.

Closes protocolbuffers#15557

COPYBARA_INTEGRATE_REVIEW=protocolbuffers#15557 from dmaclach:privacy 4c4e570
PiperOrigin-RevId: 601362376
deannagarcia pushed a commit to deannagarcia/protobuf that referenced this issue Jun 20, 2024
`mach_absolute_time` is one of Apple's required reason APIs (https://developer.apple.com/documentation/kernel/1462446-mach_absolute_time?language=objc). Replace it with the suggested `clock_gettime_nsec_np(CLOCK_UPTIME_RAW)` so that we don't need a RRA entry in a privacy manifest.

issue protocolbuffers#15029

Closes protocolbuffers#15554

COPYBARA_INTEGRATE_REVIEW=protocolbuffers#15554 from protocolbuffers:dmaclach-mach_absolute_time 295d831
PiperOrigin-RevId: 601370915
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants